Notre propos ici est de réaliser un tirage aléatoire soit d'un nombre soit d'une série de nombres inclus entre 2 bornes
Exemple: nous souhaitons simuler le tirage du loto soit tirer au sort 6 nombres entre 1 et 49
Chaque numéro ne peut être tiré qu'une seule fois
Le tout est basé sur la bibliothèque intégré à javascript Math() et notamment Math.floor() et Math.random()
Math.random(): Retourne un nombre réel aléatoire entre 0 et 1
Math.floor() Retourne l'entier inférieur ou égal le plus proche du paramètre
En combinant ces deux fonctions nous pouvons générer un tirage speudo aléatoire
function aleatoire(nombreTirages, nombreMax, nombreMini){
/*
--------------------------
PLF-
http://www.jejavascript.net/
Ce
script effectue un tirage où chaque numéro ne peut être tiré qu'une seule fois.
On
tire nombreTirages nombre compris entre nombreMini et nombreMax
si
nombreMini est ommis, alors nombreMini vaut 1
-----------------------------
*/
var contenuTirage
= new Array;
var nombre;
if
(!nombreMini) nombreMini = 1;
//gestion d'erreur
var
nombreMaxTirages = nombreMax - nombreMini +1;
if
(nombreTirages > nombreMaxTirages) nombreTirages
= nombreMaxTirages; //gestion erreur
for
(i=0; i < nombreTirages ;i++){
nombre
= Math.floor(Math.random() * nombreMax)+1; //retourne
un nombre au hasard entre 1 et nombreMax
if
(nombre >= nombreMini){
contenuTirage[i]=
nombre;
for
(t=0 ; t < i ;t++){
if
(contenuTirage[t]==nombre){ //si nombre existe déjà refait
un tirage en décrémentant i
i--;
}
}
}
else
i--;
}
if
(nombreTirages == 1){
var
retour = contenuTirage[0];
return
retour;
}
return
contenuTirage;
}
En résumé nous faisons x tirages
Chaque résultat du tirage est sauvegardé dans un tableau(Array)
Si le résultat de ce tirage existe déjà, l'indice du tableau est décrémenté afin de remplacer son contenu par un nouveau tirage
Une fois que les x tirages ont été effectués le processus s'arrête
<script>
var tab = aleatoire(3, 10, 2); //tirage des
éléments - ici 3 tirages compris entre 10 et 2
var nombres="";
for
(i=0 ;i<tab.length ;i++){
nombres=
nombres + tab[i]+" "; //lecture de chaque élément du tirage
}
document.write(nombres);
</script>
Pour simplifier nous avons incorporer cette fonction à la bibliothèque cnx()
pour mémoire pour utiliser cette bibliothèque faites:
<script src="http://jpconnexion.free.fr/jpclibrary_script/cnx.json.js"></script>
ou encore télécharger cette bibliothèque sur notre site et écrire
<script src="../jpclibrary_script/cnx.json.js"></script>
nota: penser à actualiser le chemin au travers de votre propre site
var tab2 = cnx.aleatoire(4,10,4); //4
tirages aléatoire dans [10, 4]
var nombres="";
for (i=0 ;i<tab2.length ;i++){
nombres= nombres + tab2[i]+"
";
}
document.write(nombres);