![]() |
Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Forum De Bell Tolls (http://www.dsy.it/forum/forumdisplay.php?forumid=7)
-- [C]Rand() (http://www.dsy.it/forum/showthread.php?threadid=7854)
[C]Rand()
Un piccolo problema con il C... devo generare n numeri random uniformemente distribuiti in (0,1).
Sapendo dell'esistenza di drand48() che proprio di questo si occupa, l'ho utilizzata. Senonchè non è possibile inizializzare drand48() passandogli un valore come si fa comunemente con rand().
Allorchè ho pensato : uso rand(time(NULL))/MAX_RAND e ottengo dei valori uniformemente distribuiti tra [0,1] , probabilmente non mi usciranno mai lo 0 e l'1 e quindi vabbene lo stesso perchè almeno inizializzo il generatore di numeri random in maniera diversa ad ogni lancio del programma.
Ma , incredibile dictu, mi da dei problemi proprio sul time(NULL), il problema lo posto estensivamente domani ma fondamentalkmente non funziona se non eliminando time(NULL), e a quel punto tanto vale usare drand48() che mi genera un intervallo aperto.
Tutto chiaro, no?Avete idee??Il sistema operativo è ovviamente Linux, Red Hat 9.Grazie a chi mi aiuta.
__________________
Cristian,il Nous che invoglia ^_^
"La capa è troppo in la,e la sbarba è troppo giovane..mi sa che qua si va in bianco"
Ryo Saeba (City Hunter)
hai provato a inizializzare il seme con srand(valore) e poi a fare rand()/MAX_RAND ???
__________________
L'ombra si nasconde nella notte, laddove neanche l'occhio piu' allenato riesce a scorgerla...
Homo sapiens non urinat in ventum
Non c'è birra senza spina
La vita e` il dono piu` prezioso che Giove ci ha fatto (Ali G) 
Mastro Birromane della Falange Alcolica...
Gwath Lumbule... as darkness falls, he comes out! Dark Shadow's Blog
Tu mi dai la forza per andare avanti... Non fermarti continua a spingere!!!
e' vero, prima devi inseminarlo con srand()
__________________
Tanenbaum is overrated.
Semmai srand48(long seed), o meglio seed48(unsigned short seed[3]), che come parametro vuole un vettore con i 3 interi che compongono il seme da 48 bit, e ritorna il puntatore al vecchio seme (di cui puoi anche fregartene bellamente).
Ma non ho capito se tu vuoi un intervallo aperto o chiuso... drand48 ti dà un double nell'intervallo [0, 1) mi pare.
EDIT:
Che poi, se il problema è con la time(), continuerà a esserci visto che probabilmente userà la stessa funzione per inizializzare il seme (inizializzare con una costante non ha molto senso...)
__________________
Non ti laureare, continua a cazzeggiare!
"È tutta merda..." - clod81
Nous, sei andato a vederlo il mio generatore percorsi? ![]()
Li faceva random, non ricordo come, ma randomizzava bene. 
http://www.dsy.it/forum/showthread.php?s=&threadid=2606
__________________
Attenzio', concentrazio', ritmo e VITALITÀ
| All times are GMT. The time now is 11:23. | Show all 5 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.