Re: Fortran e i numeri casuali

From: Giorgio Pastore <pastgio_at_univ.trieste.it>
Date: Thu, 27 Feb 2003 12:31:50 +0100

Antonio Uras wrote:

> pare che FORTRAN abbia una subroutine implicita chiamata SRAND( ),
...

No. Non e' esattamente cosi'. Lo standard del fortran 77 NON prevede una
funzione intrinseca per numeri casuali. (Puoi verificare su
http://www.fortran.com/fortran/F77_std/rjcnf0001-sh-15.html#sh-15.10 )
Su molti sistemi Unix c'e' la possibilita' di chiamare una function
srand con le caratteristiche che descrivi. In genere e' un' interfaccia
alla routine standard con lo stesso nome del C e del C++.
Per lavori seri non sono granche' (puoi trovare una discussione a
riguardo in
http://www.coyotegulch.com/algorithm/libcoyote/TwistedRoad/TwistedRoad.html
).
Una scelta migliore generalmente accessibile su sistemi unix e' la
drand48 (man drand48 per maggiori dettagli). Comunque, una ricerca in
rete permette di trovare sorgenti di ottimi generatori.

Il Fortran 90/95 invece ha una subroutine standard (RANDOM_NUMBER con la
collegata RANDOM_SEED ).
Dovrebbe essere decente ma non ne ho un' esperieza diretta.


Vorrei inoltre aggiungere un commento sulla questione di come generare
numeri in un run successivo che non riproducano sempre la stessa serie
di dati. La mia esperienza e' che il modo migliore e' di lasciar
perdere procedure di interfacciamento all' ora locale o altre sorgenti
di "casualita'" ma piuttosto di "continuare" la generazione della
successione di numeri random del run precedente. Col meccanismo, fornito
da tutti i generatori, di un seed per innescare la sequenza, basta farsi
scrivere alla fine di un run il valore in questione ed usarlo come seed
per l' inizio del run successivo.

Se il generatore e' buono si continuera' nella (sperabilmente lunga
sequanza di numeri random) e, in caso di necessita' (debug), la sequenza
e' deterministicamente riproducibile.

Giorgio
Received on Thu Feb 27 2003 - 12:31:50 CET

This archive was generated by hypermail 2.3.0 : Fri Nov 08 2024 - 05:10:30 CET