Listing du fichier nombresAuHasardDistincts.js
00001// # (gH) -_- nombresAuHasardDistincts.js ; TimeStamp (unix) : 16 Novembre 2020 vers 18:52
00002
00003 // ################################################
00004
00005 function tirageAleatoireSimple(valMax) {
00006
00007 // ################################################
00008
00009 // on tire au hasard un seul nombre entre 1 et valMax
00010 // qu'on renvoie en fin de fonction
00011
00012 if (valMax<1) { valMax = 1 }
00013
00014 leNombre = Math.random() * valMax
00015 leNombre = Math.round(leNombre)
00016
00017 if (leNombre<1) { leNombre = 1 }
00018
00019 return(leNombre)
00020
00021 } // fin de function tiragesAleatoireSimple
00022
00023 // ################################################
00024
00025 function tiragesAleatoires(nt,pmax) {
00026
00027 // ################################################
00028
00029 // on tire au hasard nt nombres entre 1 et pmax
00030 // qu'on affiche dans un textarea dont l'id est tirs
00031
00032 // le formatage via la fonction sprintf()
00033 // est issu de https://github.com/alexei/sprintf.js/blob/master/src/sprintf.js -- merci Alexei !
00034
00035 res = ""
00036 nombres = []
00037
00038 for (i=1;i<=nt;i++) {
00039 f_i = sprintf("%3d",i)
00040 f_nt = sprintf("%3d",nt)
00041 f_pmax = sprintf("%3d",pmax)
00042 nbe = 1
00043 tir = tirageAleatoireSimple(pmax)
00044 if (i>1) {
00045 while (nombres.indexOf(tir)>-1) {
00046 tir = tirageAleatoireSimple(pmax) ;
00047 nbe++
00048 } ; // fin tant que
00049 } // fin si
00050 f_tir = sprintf("%3d",tir)
00051 f_nbe = sprintf("%3d",tir)
00052 res += " tirage " + f_i + " sur " + f_nt + " : " + f_tir + " au bout de " + f_nbe + " tirages\n"
00053 nombres.push(tir)
00054 } // fin pour i
00055
00056 window.document.getElementById("tirs").value = res
00057
00058 } // fin de function tiragesAleatoires
00059
00060 // ################################################
00061
00062 function tirages() {
00063
00064 // ################################################
00065
00066 // on commence par afficher la zone de résultats
00067
00068 window.document.getElementById("resultats").setAttribute("class","visible")
00069
00070 // on récupère la valeur de n, à tester comme entier entre 1 et 50,
00071 // on récupère la valeur de p, à tester comme entier entre 1 et 10,
00072
00073 // puis on tire au hasard n nombres entre 1 et p
00074 // via la fonction précédente
00075
00076 valn = window.document.getElementById("n").value
00077
00078 if (valn=="") {
00079 window.document.getElementById("tirs").value = " la valeur de n est vide "
00080 return
00081 } // fin si
00082
00083 // à cause du texte, plutot que : if (!Number.isInteger(valn)) {
00084 // on passe par une expression régulière
00085
00086 if (!/^[0-9]+$/.test(valn)) {
00087 window.document.getElementById("tirs").value = " la valeur de n (" + valn + ") n'est pas un entier "
00088 return
00089 } // fin si
00090
00091 valn = parseInt(valn) // efnin !
00092
00093 if ((valn<1) || (valn>50)) {
00094 window.document.getElementById("tirs").value = " n vaut " + valn + " ; c'est un entier qui n'est pas compris entre 1 et 50"
00095 return
00096 } // fin si
00097
00098 valp = window.document.getElementById("p").value
00099
00100 if (valp=="") {
00101 window.document.getElementById("tirs").value = " la valeur de p (nombre de tirages) est vide "
00102 return
00103 } // fin si
00104
00105 if (!/^[0-9]+$/.test(valp)) {
00106 window.document.getElementById("tirs").value = " la valeur de p n'est pas un entier "
00107 return
00108 } // fin si
00109
00110 if ((valp<1) || (valp>valn)) {
00111 window.document.getElementById("tirs").value = " p est un entier qui n'est pas compris entre 1 et " + valn
00112 return
00113 } // fin si
00114
00115 tiragesAleatoires(valp,valn)
00116
00117 } // fin de function tirages
00118
00119 // ################################################
00120
00121 function videTirages() {
00122
00123 // ################################################
00124
00125 window.document.getElementById("tirs").value = " "
00126
00127 } // fin de function videTirages
Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.
Retour à la page principale de (gH)