Avec le fortran pour générer un nombre aléatoire ou une suite de nombres aléatoires il existe la fonction rand(). Cependant, en utilisant rand sans préciser une graine pour le générateur comme dans cet exemple
program CreateRandomNumberSequenceimplicit noneinteger :: iinteger*4 timeArray(3) ! Holds the hour, minute, and seconddo i = 1, 10write(6,*) rand(0) # Next Random Numberend doend program CreateRandomNumberSequence
on obtient toujours la même suite de 10 nombres aléatoires. Pour générer une suite de nombres aléatoires différentes il faut utiliser une graine (seed) pour le générateur (entier autre que 0 ou 1):
program CreateRandomNumberSequenceimplicit noneinteger :: iinteger :: seedseed = 43write(6,*) rand(seed)do i = 1, 9write(6,*) rand(0)end doend program CreateRandomNumberSequence
Pour ne pas entrer manuellement un seed vous pouvez par exemple utiliser la date (voir), comme dans cet exemple:
program CreateRandomNumberSequenceimplicit noneinteger :: iinteger*4 timeArray(3) ! Holds the hour, minute, and secondcall itime(timeArray) ! Generate sequence of random numberwrite(6,*) rand ( timeArray(1)+timeArray(2)+timeArray(3) )do i = 1, 9write(6,*) rand(0)end doend program CreateRandomNumberSequence
qui donne par exemple:
5.86748123E-040.8653340340.6703989510.3987598420.9575426580.4219388960.5283460620.9148535730.9472303390.101967096
Recherches associées
| Liens | Site |
|---|---|
| RAND — Real pseudo-random number | gcc doc |
| A sample random number Fortran program | infohost |
