|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jun 2005
Messaggi: 123
|
[C] funzione srand!
ciao ragazzi!
in un piccolo esercizio in c devo usare una funzione che genera casualmente 0 e 1... non riesco a trovare la sintassi corretta.. qualcuno ha sottomano questa funzione? grazie! ciao! |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jun 2005
Messaggi: 123
|
x=rand() % 10 ;
così riesco a generare numeri da 0 a 9!! come posso fare per avere solo 0 o 1 ? |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Jun 2005
Messaggi: 123
|
x=rand() % 10
ecco mi genera 0 e 1.... però mi da sempre gli stessi valori....devo inserire la funzione 'time' ? |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 499
|
quello più semplice ma non efficace è :
Codice:
srand(time(NULL)); x=rand();
__________________
![]() ![]() |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Jun 2005
Messaggi: 123
|
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 499
|
Codice:
srand(time(NULL)); x=rand()%100; x/=100; ![]()
__________________
![]() ![]() |
![]() |
![]() |
![]() |
#8 | |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Usare una congruenza modulare con una funzione pseudorandom di cui non si conoscono i dettagli è rischioso per alcuni motivi di cui parlavo nella guida segnalata poc'anzi. Per sfruttare al meglio le proprietà di pseudocasualità di un generatore di valori interi, di solito conviene convertire il valore restituito in un numero in virgola mobile compreso tra 0 incluso e 1 escluso, e usare il nuovo valore per generare la sequenza richiesta. Ad esempio, partendo da rand (che restituisce int) puoi creare frand (che restituisce double): Codice:
double frand() { return (double)rand()%(RAND_MAX+1.0); } Codice:
int bern(double p) { return (frand() < p); }
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu Ultima modifica di Ziosilvio : 15-01-2008 alle 11:02. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:02.