Anche se alla fine jQuery non centri così tanto, ma l’ho usato solo per completezza. Mi serviva creare questa funzione per un concorso a premi, dove serviva il numero fortunato per partecipare all’estrazione finale. La funzione permette di escludere un set di numeri già estratti inseriti in questo caso in un array. In particolare ho creato un bottone che genera il numero fortunato e lo mette in un form pronto per essere inviato. In questo caso la funzione random genera numeri da 1 a 90. Vediamo il codice…

Vediamo nel dettaglio la funzione principale:

14
15
16
17
18
19
20
21
22
23
24
25
jQuery("#randnum").click(function(){
		var escludi= new Array(0,91);
		var ris=true;
                var randmnum;
          if(escludi.lenght < 90){
		while(ris == true){
                     randomnum=getrandomnumber();
                     ris=cercainarray(randomnum,escludi);
		}
             jQuery("#os1").val(randomnum);
        }else jQuery("#os1").val("Estrazione terminata");
});

L’array “escludi” contiene tutti i numeri già estratti. Per semplificare, ho preferito creare un array fisso, ma in realtà è preferibile usare un database o un file per tenere traccia delle estrazioni. Abbiamo inoltre una variabile sentinella “ris” e “randnum” che contiene il numero generato.

Nel ciclo ho simulato una sorta di ricorsione, poichè la funzione Cercainarray restituirà prima o poi un valore false cioè che non si trova nell’array escludi. Quando l’array arriverà a capacità cioè 90, verrà saltata la funzione di estrazione del numero.

Di seguito le funzioni ausiliarie di ricerca e generazione numero randomico.

10
11
12
13
14
15
16
17
18
19
20
21
 function getrandomnumber(){
		return Math.round(Math.random()*91);
} 
 
function cercainarray(numero,vett){
	var flag = false;
	var lunghezza = vett.length;
		for(i=0; i < lunghezza; i++){
  			if(vett[i] == numero){ flag=true; break;}
		}
		 return flag;
}

 

Questo sistema sarebbe ancora più semplice se usassimo Php. Una funzione che faccia una chiamata ajax ad un file php il quale si occupa della generazione del numero della memorizzazione nel database ed infine ritorna il numero corretto ed esclusivo. Un altro modo ancora più sintetico utilizzando solo ed esclusivamente SQL facendo generare un numero che non compare tra la lista di quelli inseriti in tabella attraverso un’unica query e ritornando il valore con php. Di modi ce n’erano tanti non so perchè ho utilizzato questo..forse perchè erano le 2 di notte?

Se volete pubblico anche le soluzioni citate. Ditemi voi.

Ovviamente non sono esente da errori, quindi se ne trovate qualcuno parliamone nei commenti.