Username: Password: oppure
.NET World - Estrazione numeri tombola
Forum - .NET World - Estrazione numeri tombola

Avatar
nervo91 (Normal User)
Newbie


Messaggi: 2
Iscritto: 16/12/2010

Segnala al moderatore
Postato alle 11:13
Giovedý, 16/12/2010
Ciao sto facendo un programmino per il gioco della tombola.
Vorrei estrarre i numeri senza ripeterli
Qualcuno mi puo aiutare??? Grazie:)


Luner
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2696
Iscritto: 21/09/2007

Up
2
Down
V
Segnala al moderatore
Postato alle 11:49
Giovedý, 16/12/2010
Testo quotato

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.

Quoto - pierotofy - 17/12/10 18:05


Dottore in Ingegneria Informatica, Politecnico di Milano

Nuovo simulatore di battaglie di OGame: http://www.osimulate.com
Tutto un mondo da ridere: http://www.mondorisate.it
PM
Avatar
nervo91 (Normal User)
Newbie


Messaggi: 2
Iscritto: 16/12/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 11:26
Giovedý, 16/12/2010
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


Luner
PM
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 13:02
Giovedý, 16/12/2010
scusate il post, non avevo letto del tutto quello di HeDO

Ultima modifica effettuata da lorenzo il 16/12/2010 alle 13:04


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM
Avatar
gigisoft (Member)
Guru


Messaggi: 692
Iscritto: 11/10/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 16:05
Giovedý, 16/12/2010
Testo quotato

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.


Le cose si fanno per bene o non si fanno affatto
PM
Avatar
paoloricciuti (Ex-Member)
Pro


Messaggi: 137
Iscritto: 27/04/2010

Up
-1
Down
V
Segnala al moderatore
Postato alle 11:19
Giovedý, 16/12/2010
Testo quotato

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:
Codice sorgente - presumibilmente .NET World

  1. int[90] numeri={1,2,...,89,90};
  2. boolean[90] uscito={false,...,false};
  3. for(i=0; i<90; i++){
  4. int random;
  5. do{
  6. random=rand(90);
  7. }while(uscito[random]);
  8. stampa(numeri[random]);
  9. uscito[random]=true;
  10. }



Member paoloricciuti= new Member();
PM