|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Lecce
Messaggi: 792
|
[C] generazione di numeri pseudocasuali float!
devo ottenere tramite la funzione rand() un numero di tipo float. è possibile? avevo pensato a una funzione del genere:
n=(float)rand() % n; con n ed m di tipo float. il compilatore mi da errore in quanto entrambe le variabili sono di tipo float. dunque ho sbagliato sicuramente, ma alla fine questa cosa si può fare oppure no?
__________________
Chieftec DA-01WD - Enermax 430W - MSI K8N Neo2 Platinum - A64 3000+ @ 2610 Cooled By K10 Hurican - 512MB Corsair XMS PC3200 XL - PixelView 6600GT - WD Raptor 36GB+Maxtor 80 GB - Pioneer DVR A05 - LiteOn 52X-24X-52X - Acer TM661 "La Famigghia": SetiWarrior di 8° livello |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Che io sappia % è l'operatore di resto della divisione intera...di conseguenza non credo che n possa essere float... Anche se non ho mai provato...
Io farei una cosa del genere: int n = MAX_CHE_TI_PARE; float f = ((float)(rand()%n)*(float)(rand()%n))/(float)(1+rand()%(n-1)); Credo che così possa andare...e dovrebbe rispettare anche la distribuzione di rand... Ultima modifica di cionci : 04-01-2004 alle 11:25. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Lecce
Messaggi: 792
|
io infatti uso l'operatore % per ottenere numeri random compresi in un intervallo e per gli interi funziona.
per il resto vedrò di provarlo. grazie
__________________
Chieftec DA-01WD - Enermax 430W - MSI K8N Neo2 Platinum - A64 3000+ @ 2610 Cooled By K10 Hurican - 512MB Corsair XMS PC3200 XL - PixelView 6600GT - WD Raptor 36GB+Maxtor 80 GB - Pioneer DVR A05 - LiteOn 52X-24X-52X - Acer TM661 "La Famigghia": SetiWarrior di 8° livello |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Riguardo al rispettare la ditribuzione...mi sa che ho detto una cavolata...
Vediamo di studiarla in un altro modo: int n = MAX; float num = (float)(rand()%n); Così ti da numeri float, ma sempre senza decimali... Se ti interessano anche i decimali potresti fare una cosa del genere: float num = (float)(rand()%n) + (float)rand() / (float)RAND_MAX; Questo dovrebbe andare già meglio... Ovviamente i numeri generati sono compresi fra 0 e n+1 (non raggiungono mai n+1)... |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Lecce
Messaggi: 792
|
grazie cionci funziona alla perfezione.
cmq anche la soluzione che mi avevi postato prima funziona, anche se non ti so dire se rispetta o meno la distribuzione ciao e grazie ancora
__________________
Chieftec DA-01WD - Enermax 430W - MSI K8N Neo2 Platinum - A64 3000+ @ 2610 Cooled By K10 Hurican - 512MB Corsair XMS PC3200 XL - PixelView 6600GT - WD Raptor 36GB+Maxtor 80 GB - Pioneer DVR A05 - LiteOn 52X-24X-52X - Acer TM661 "La Famigghia": SetiWarrior di 8° livello |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:05.



















