|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
[C++] random in un for
devo calcolare una serie di random tra 3 e 18 (circa una ventina) e ho notato che mi escono tutti valori uguali anche usando il time di sistema come seme per la randomizzazione... come devo fare?
facendo Codice:
#include <time.h> for (int i=0;i<n; i++){ time_t seme; seme=time(); srand(&seme); x[i]=rand(); // vettore di uscita } |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Codice:
srand((unsigned)time(NULL)); for (int i=0;i<n; i++){ x[i]=rand(); // vettore di uscita } |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
|
il problema è che i numeri continuano ad essere uguali...
non genera numeri diversi... è stressante... ![]() ![]() ![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Non mi ricordo il C++ tanto bene ma nn potresti fare un randomize
Dimmi se ti va ![]() |
![]() |
![]() |
![]() |
#5 | |
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
Re: [C++] random in un for
Quote:
Se ti basta un generatore pseudo-casuale ( deterministico quindi ), la seguente dovrebbe funzionare bene (non chiedermi dove l'ho presa... ormai non lo ricordo piu' ![]() ![]() Codice:
#define a15 452807053 #define mask INT_MAX int clock_seed() { int seed; unsigned int st; time_t times; times = time(0); st = (unsigned int) times / 2; seed = (int) st; return ( ((seed%2) == 0) ? seed+1 : seed ); } int rnd7() { static int IX = clock_seed(); IX = IX * a15; return((IX < 0)? IX & mask : IX); } |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Codice:
srand((unsigned)time(NULL)); for (int i=0;i<n; i++){ x[i]=rand(); // vettore di uscita } Sia con VC++ che con Mingw GCC... Ho un 1800+... |
![]() |
![]() |
![]() |
#7 | |
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
Quote:
|
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#9 |
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
ah...dimenticavo... nel mio caso mi servivano float e quindi probabilmente era nella conversione che la distribuzione omogenea andava a farsi benedire
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Mar 2003
Città: Genova
Messaggi: 4324
|
Una volta avevo fatto un prog che generava numeri sempre diversi salvando quelli non ancora "estratti" in un vettore dinamico che ad ogni estrazione veniva letto e confrontava il nuovo numero, non è il massimo dell ottimizzazione però funzionava ed era abbastanza simile a quello postato inizialmente basta aggiungere il vettore e la funzione di confronto
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:48.