Faire un tirage aléatoire

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

Code et principe de l'applicatif

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

Exécutons cette fonction:

<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);