PDA

View Full Version : [C++] Problema di randomizzazione di valori all'interno di una funzione in un ciclo


Riccardo88
12-11-2009, 18:23
Ciao, ho il seguente problema:
Sto scrivendo un programma che calcoli le vincite del super enalotto e che calcoli n giocate sempre con la stessa combinazione giocata per fare una stima di quante volte si è vinto e quali premi.

Ora:
In una funzione chiamata void estrazione(); ho un array estratti[SIZE] che prende 6 valori da rand() % 90 + 1 tramite srand( (unsigned) time( NULL );
Quindi la funzione scritta nell'unità di progetto header.cpp è richiamata nel main.cpp tramite il solito #include "header.h"
A questo punto nel main.cpp ho un ciclo
for( k = 0; k < roll; k++ ){ estrazione(); } che avrebbe il compito di calcolare i risultati delle giocate e assegnare i punteggi ad eventuali vincite ed infine stampare quante volte si è vinto e quali premi.

Mi funziona tutto, tutto tranne il fatto che la funzione richiamta nel main all'interno del ciclo non aggiorna la serie di numeri estratti, quindi i numeri giocati dall'utente si confrontano sempre con la stessa estrazione che viene stampata n volte invece di essere avviata n volte.

Ora se rand(); si trova all'interno di un ciclo mi aggiorna i valori random ma se inserisco le variabili alla quale è associata rand() allinterno di uan funzione e metto quest'ultima in un ciclo i valori non vengono aggiornati...In pratica come si fa a far aggioranre dei valori random che non si trovano direttamente in un ciclo ma in una funzione la quale a sua volta si trova dentro un ciclo?

Grazie.

Riccardo88
12-11-2009, 19:39
HO APPENA RISOLTO!!!! :sofico: :sofico: :sofico:
Mi ero perso in un bicchier d'acqua....comunque per chi fosse interessato ho riprovato a riscrivere solo una porzione del programma,nella parte che mi interessava e così ho risolto,in pratica basta inserire
srand( (unsigned) time( NULL ) ); all'esterno del ciclo ma nella main.cpp e non nel header.cpp perchè altrimenti stampa la funzione con gli stessi valori n volte invece di avviarla n volte. MITICO! :D
P.S su 100 estrazioni ho preso solo un terno! E' proprio vero che bisogna avere un c... così per vincere qualcosa al Superenalotto fortuna che così facendo non ho speso niente! LOL :sofico:

lupixslacky
12-11-2009, 20:36
Ma anche meglio
srand( (unsigned) time( 0 ) )

Riccardo88
13-11-2009, 09:11
Al momento il prof in laboratorio ci ha fatto vedere così, con NULL.
Come mai dovrebbe essere meglio mettendo lo 0?