Comment faire venir au hasard des musiques, ou des images, ou des pages ?

Le javascript dispose d'une fonction Math.random() qui fournit un nombre réel entre 0 et 0,999... Si on dispose de N objets, on multiplie par N et on arrondit à l'entier inférieur par la fonction Math.floor() . Par exemple, la variable
   var index= Math.floor(Math.random() * 58); 
fournira un entier aléatoire entre 0 et 57.

A noter qu'il n'est pas très clair si la borne supérieure 1 peut être atteinte ou non. La probabilité pour que cela arrive est quasi-nulle, mais il sera sage de mettre un test du genre   if (index==58) index=57; pour écarter tout ennui.

A noter également qu'il existe une deuxième fonction javascript pour arrondir un nombre réel : Math.round(x) renvoie l'entier le plus proche de x — ou l'entier supérieur si x est pile à mi-chemin entre deux entiers. Mais nous nous servirons que de Math.floor() dans ce qui suit.

Des musiques...

Ensuite, si nous avons bien 58 musiques, il faut faire en sorte que ce numéro puisse désigner l'une d'entre elles. Le plus simple serait de donner à ces musiques des noms de fichiers incluant ce numéro, par exemple : mus_0.mid, mus_1.mid,... mus_57.mid. Le nom du fichier tiré serait alors reconstitué par
 var musique="mus_"+index+".mid"; 
Mais peut-être préférerez vous garder des noms plus parlants pour vos fichiers. Il faudra alors constituer un tableau avec ces noms :
var musique = new Array("fanfare.mid","summertime.mid",...) 
Javascript pourra alors directement lire le nombre d'éléments du tableau et faire le tirage au sort en conséquence :
var index= Math.floor(Math.random() * musique.length); 
Le nom de fichier choisi sera cette fois l'élément musique[index] .
Reste ensuite à jouer le morceau tiré au sort. Comme ce tirage aléatoire n'a guère de sens qu'au moment du chargement d'une page d'accueil (un jukebox aléatoire a-t-il de l'intérêt ?), l'instruction de lecture du fichier sera incorporée dynamiquement à la page. On arrive ainsi à la forme suivante pour le script complet :
<SCRIPT language="Javascript">
    var musique = new Array("fanfare.mid","summertime.mid",...)
    var index = Math.floor(Math.random() * musique.length);
    if (index == musique.length) index=index-1;
      document.write("<EMBED SRC=' "+musique[index]+
                     " ' autres attributs' >")
 </SCRIPT> 
où les « autres attributs » sont ceux du EMBED : instructions pour la console, le démarrage, le bouclage, etc... On fera également attention au répertoire des musiques et on modifiera éventuellement le script en conséquence.

des images...

On peut jouer de la même manière avec les images, et obtenir une image aléatoire lors du chargement de la page (il suffit que le document.write() soit utilisé pour reconstituer une instruction <IMG> ). Mais on peut aussi intervenir sur une page déjà affichée et opérer des changements aléatoires d'images sur des évènements "MouseOver" ou "Click", en réutilisant les techniques étudiées pour les rollovers.

...et du texte

Si on veut charger une page au hasard en cliquant sur un lien, ce lien devra faire appel à une fonction javascript :
 <A HREF="javascript:tirage()">cliquez ici</A> 
où la fonction tirage() peut être définie par un script semblable aux précédents, mais se terminant par une instruction de changement de page, comme (dans le cas de 25 pages nommées page_0.html, page_2.html,... page_24.html :
<SCRIPT language="Javascript">
 function tirage() {
    var index= Math.floor(Math.random() * 24.999999);
    var page="page_"+index+".html";
    self.location.href=page }
</SCRIPT>
(le 24.99999 est là pour faire l'économie du test sur index==25)

On peut aussi faire divers jeux de texte. Par exemple, en combinant ces techniques au contrôle de la barre d'état que nous avons vue par ailleurs, on peut faire apparaître des messages aléatoires dans cette barre. Passez la souris ici pour voir (sans cliquer; il y a 6 messages possibles)

Charles