|
|||||||
|
|
|
![]() |
|
|
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: 4330
|
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: 09:27.



















