Newsgroup: it.comp.lang.c++
Titolo: [REQ] Random number generator

Salve,
avrei bisogno di una routine c++ per generare numeri casuali interi
*uniformemente* distribuiti a 32 bit. Purtroppo utilizzando la rand()
stabdard ottengo sequenze tutt'altro che random...
Ogni aiuto č ben accetto.
grazie a tutti
il_t@sso
il_t...@yahoo.com

 wrote in message
X=jXN=CzvR6uvIgRe...@4ax.com...

Prova a dare un'occhiata a:
space.tin.it/computer/dpallas
č spiegato il metodo per generare numeri casuali utilizzato dai compilatori.
Daniele.

 
il_t...@yahoo.com
Prova a dare un'occhiata a:
space.tin.it/computer/dpallas
Daniele.

Ogni aiuto è ben accetto.


 
www.snippets.org
se non ricordo male li trovi qualcosa!
Fab

 Ogni aiuto č ben accetto.
C'e` stato su questo newsgroup (o forse su it.comp.lang.c) un lungo thread
di discussione sull'argomento "generazione di numeri casuali".
Non vorrei riaprire la discussione, ma se vuoi che i numeri "casuali" 
abbiano una data funzione di distribuzione, allora i migliori generatori di 
numeri casuali sono *deterministici*. In questo modo un osservatore
che non conosce la legge con cui i numeri sono generati e fa delle
misure, trova che effettivamente i numeri sono uniformemente distribuiti
(se il generatore genera numeri con fdd uniforme).
Se invece i numeri generati  fossero "casuali" in senso stretto non potresti
avere alcuna garanzia sul fatto che i numeri generati siano uniformemente
distribuiti in un qualche intervallo. La funzione rand standard, per quello
che ne so io, non passa alcuni test a cui invece i generatori di numeri
casuali dovrebbero essere sottoposti; credo ad esempio che non passi il
test del "Chi" quadro. Purtroppo non conosco implementazioni migliori
di generatori di numeri casuali, ma sicuramente qualche esperto del settore
che frequenta il NG ti sapra` consigliare, anche perche' scriversi da soli
una routine che passi i vari test non e` semplice. 
Marco Guidi.


Grazie a tutti per l'aiuto. Un ragazzo del NG mi ha gentilmente
mandato un file contenente la routine che cercavo. Purtroppo non
ricordo il nome del ragazzo, me ne scuso molto. Quello che ho notato è
che se si richiama la routine reimpostando esplicitamente il seed
uguale a quello della chiamata precedente la sequenza di numeri
generata è perfettamente identica. Questo è un comportamento normale?
il_t@sso
il_t...@yahoo.com

generata è perfettamente identica. Questo è un comportamento normale?
Si, la cosa migliore e` impostare il seme (seed) sulla base di una 
valore non precalcolato dall'applicazione, ad esempio il timer di
sistema.
Paolo
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------

 generata è perfettamente identica. Questo è un comportamento normale?
Certo. Il generatore genera sequenze pseudo-casuali a partire dal seme
indicato e quindi a seme uguale corrisponde sequenza uguale. E' anche
utile per la ripetibilità degli esperimenti. Se vuoi sequenze sempre
diverse devi trovare il modo di impostare semi sempre diversi magari
utilizzando l'orologio di sistema.
EMG



Infatti ho sobbalzato davanti a certi risultati... erroneamente
reimpostavo il seed ad ogni chiamata della routine con time(0).
Purtroppo le chiamate si susseguivano con una granularità inferiore al
secondo, cosicché time(0) spesso restituiva lo stesso valore -> stessa
sequenza. Una cosa stupida da parte mia, nessuna necessità di
reimpostare il seed tutte le volte.
il_t@sso
il_t...@yahoo.com