Se state usando una versione di Perl antecedente alla 5.004, dovete chiamare
srand una volta, all'inizio del vostro programma, per inizializzare il
generatore di numeri casuali.
BEGIN { srand() if $] < 5.004 }
La versione 5.004 e le successive chiamano automaticamente srand all'avvio.
Non chiamate srand più di una volta -- rendereste i vostri numeri meno
casuali, non di più.
I calcolatori sono bravi ad essere prevedibili, ma non nell'essere
casuali (malgrado le apparenze causate dagli errori nei vostri
programmi :-). Fate riferimento all'articolo random della
collezione "Far More Than You Ever Wanted To Know" ["Molto più
di quanto avreste mai voluto sapere", NdT], cortesia di Tom Phoenix,
che parla di questo argomento. John Von Neumann disse "Chiunque tenti
di generare numeri casuali con metodi deterministici vive, ovviamente,
nel peccato".
Se volete numeri casuali più casuali di quanto rand (assieme a
srand) possa fare, dovreste provare anche il modulo Math::TrulyRandom,
disponibile su CPAN. Fa uso delle imperfezioni dell'orologio di sistema
per generare numeri casuali, ma ci vuole un po' di tempo. Se volete un
generatore di numeri pseudocasuali migliore di quello che il vostro sistema
operativo mette a disposizione, consultate "Numerical Recipes in C"
all'indirizzo http://www.nr.com/.
|