// # (gH) -_- nombresAuHasardDistincts.js ; TimeStamp (unix) : 16 Novembre 2020 vers 18:52
// ################################################
function tirageAleatoireSimple(valMax) {
// ################################################
// on tire au hasard un seul nombre entre 1 et valMax
// qu'on renvoie en fin de fonction
if (valMax<1) { valMax = 1 }
leNombre = Math.random() * valMax
leNombre = Math.round(leNombre)
if (leNombre<1) { leNombre = 1 }
return(leNombre)
} // fin de function tiragesAleatoireSimple
// ################################################
function tiragesAleatoires(nt,pmax) {
// ################################################
// on tire au hasard nt nombres entre 1 et pmax
// qu'on affiche dans un textarea dont l'id est tirs
// le formatage via la fonction sprintf()
// est issu de https://github.com/alexei/sprintf.js/blob/master/src/sprintf.js -- merci Alexei !
res = ""
nombres = []
for (i=1;i<=nt;i++) {
f_i = sprintf("%3d",i)
f_nt = sprintf("%3d",nt)
f_pmax = sprintf("%3d",pmax)
nbe = 1
tir = tirageAleatoireSimple(pmax)
if (i>1) {
while (nombres.indexOf(tir)>-1) {
tir = tirageAleatoireSimple(pmax) ;
nbe++
} ; // fin tant que
} // fin si
f_tir = sprintf("%3d",tir)
f_nbe = sprintf("%3d",tir)
res += " tirage " + f_i + " sur " + f_nt + " : " + f_tir + " au bout de " + f_nbe + " tirages\n"
nombres.push(tir)
} // fin pour i
window.document.getElementById("tirs").value = res
} // fin de function tiragesAleatoires
// ################################################
function tirages() {
// ################################################
// on commence par afficher la zone de résultats
window.document.getElementById("resultats").setAttribute("class","visible")
// on récupère la valeur de n, à tester comme entier entre 1 et 50,
// on récupère la valeur de p, à tester comme entier entre 1 et 10,
// puis on tire au hasard n nombres entre 1 et p
// via la fonction précédente
valn = window.document.getElementById("n").value
if (valn=="") {
window.document.getElementById("tirs").value = " la valeur de n est vide "
return
} // fin si
// à cause du texte, plutot que : if (!Number.isInteger(valn)) {
// on passe par une expression régulière
if (!/^[0-9]+$/.test(valn)) {
window.document.getElementById("tirs").value = " la valeur de n (" + valn + ") n'est pas un entier "
return
} // fin si
valn = parseInt(valn) // efnin !
if ((valn<1) || (valn>50)) {
window.document.getElementById("tirs").value = " n vaut " + valn + " ; c'est un entier qui n'est pas compris entre 1 et 50"
return
} // fin si
valp = window.document.getElementById("p").value
if (valp=="") {
window.document.getElementById("tirs").value = " la valeur de p (nombre de tirages) est vide "
return
} // fin si
if (!/^[0-9]+$/.test(valp)) {
window.document.getElementById("tirs").value = " la valeur de p n'est pas un entier "
return
} // fin si
if ((valp<1) || (valp>valn)) {
window.document.getElementById("tirs").value = " p est un entier qui n'est pas compris entre 1 et " + valn
return
} // fin si
tiragesAleatoires(valp,valn)
} // fin de function tirages
// ################################################
function videTirages() {
// ################################################
window.document.getElementById("tirs").value = " "
} // fin de function videTirages
|