Oppure

Loading
16/12/10 10:13
nervo91
Ciao sto facendo un programmino per il gioco della tombola.
Vorrei estrarre i numeri senza ripeterli
Qualcuno mi puo aiutare??? Grazie:)
aaa
16/12/10 10:19
paoloricciuti
Postato originariamente da nervo91:

Ciao sto facendo un programmino per il gioco della tombola.
Vorrei estrarre i numeri senza ripeterli
Qualcuno mi puo aiutare??? Grazie:)


Ti scrivo dello pseudo codice:
int[90] numeri={1,2,...,89,90};
boolean[90] uscito={false,...,false};
for(i=0; i<90; i++){
int random;
do{
random=rand(90);
}while(uscito[random]);
stampa(numeri[random]);
uscito[random]=true;
}
aaa
16/12/10 10:26
nervo91
Grazie ,
ti spiego cosa avevo pensato di fare io:
allora praticamente mettevo in un vettore tutti i numeri che estraggo man mano e ogni volta li vado a ricontrollare tutti..... ma quando eseguo il programma non fa nulla si blocca.
comunque sto programmando in vb.net
aaa
16/12/10 10:49
HeDo
Postato originariamente da nervo91:

Grazie ,
ti spiego cosa avevo pensato di fare io:
allora praticamente mettevo in un vettore tutti i numeri che estraggo man mano e ogni volta li vado a ricontrollare tutti..... ma quando eseguo il programma non fa nulla si blocca.
comunque sto programmando in vb.net


senza codice è difficile dire cosa c'è che non va...

x paolo: il codice che proponi è altamente inefficiente. immagina di dover generare 10000 numeri casuali che non si ripetono. secondo il tuo ragionamento tu "tiri ad indovinare" e poi controlli se il numero non è già uscito. questo comporta diversi problemi: ad esempio immagina di aver generato con successo 9999 numeri tutti diversi, sai dirmi mediamente quanti tiri dovrai fare per tirar fuori l'ultimo numero? circa 10000 (anche di più se consideriamo la tendenza di rand di estrarre numeri bassi). capisci che questo sistema non è generale, oltre al fatto che il tempo di esecuzione non è lineare!
l'approcio migliore invece è generare una lista di numeri ordinata ed eseguire una serie di n/2 swap con indici casuali in modo da randomizzare la lista.
aaa
16/12/10 12:02
lorenzo
scusate il post, non avevo letto del tutto quello di HeDO
Ultima modifica effettuata da lorenzo 16/12/10 12:04
aaa
16/12/10 15:05
gigisoft
Postato originariamente da HeDo:
[...]
l'approcio migliore invece è generare una lista di numeri ordinata ed eseguire una serie di n/2 swap con indici casuali in modo da randomizzare la lista.


Pienamente d'accordo,
feci qualcosa di simile quando ebbo lo stesso problema nel mio Clondike per gestire il mazzo di carte.
aaa