Ieri non avevo capito la domanda, per cui non avevo risposto.
Non e` comunque unproblema JS, ma unproblema diprogrammazione e calcolo probabilistico.
La prima volta devi estrarre tra 90 numeri, la seconda tra 89 ... e cosi` via.
E` la differenza fra estrazioni indipendenti ed estrazioni successive. E` uno dei temi su cui tutti gli studenti di fisica e materie affini devono sbattere la testa (di solito all'esame di Fisica1 oppure Analisi1).
Vedi questo programmino.
codice:
<script type="text/javascript" language="JavaScript">
function inizial() { // inizializzazione matrice
var numeri = new Array(90); // preparazione matrice
for (var i=0; i<90; i++) {
numeri[i] = i+1;
}
}
function estr1() { // estrae un numero e accorcia matrice
if(numeri.length < 1) {
alert("non si puo` procedere all'estrazione");
return 0;
}
var n = Math.floor(Math.random() * numeri.length;
var estratto = numeri[n];
var i = numeri.splice(n,1); // non so se funziona
//for (var i=n+1; i<numeri.length; i++) { // toglie n da matrice
// numeri[n-1] = numeri[n];
//}
//numeri.length = numeri.length-1;
return estratto;
}
</script>
Ogni volta che viene chiamato estr1() viene ritornato un numero random scelto tra quelli non ancora estratti (corrisponde all'estrazione di un numero del lotto).
Ogni volta che viene chiamato inizial() viene ripristinata la matirce (tutti i numeri vengono immessi nel cestello).
Non ho controllato in quali browser funziona splice(), per cui ho scritto anche la funzione equivalente.
Esempio HTML:
<body onload="inizial();">
<form ...>
<input type="button" value="inizializza" onclick="inizial(); this.form.estratti.value='';">
...
<input type="button" value="estrae" onclick="this.form.estratti.value+=estr1()+' ';">
...
<input type="text" name="estratti" value='' readonly="true">
Provalo, perche` io non lo ho fatto.
E testa anche se estraendo 90 numeri sono tutti diversi. Attenzione: alla 91. estrazione dovrebbe dare il codice di errore.
Puoi anche testare il tutto con un numero inferiore di numeri, cambiando il 90 presente nella prima funzione.
Ciao
Michele