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 CreateRandomNumberSequence
implicit none
integer :: i
integer*4 timeArray(3) ! Holds the hour, minute, and second
do i = 1, 10
write(6,*) rand(0) # Next Random Number
end do
end 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 CreateRandomNumberSequence
implicit none
integer :: i
integer :: seed
seed = 43
write(6,*) rand(seed)
do i = 1, 9
write(6,*) rand(0)
end do
end program CreateRandomNumberSequence
Pour ne pas entrer manuellement un seed vous pouvez par exemple utiliser la date (voir), comme dans cet exemple:
program CreateRandomNumberSequence
implicit none
integer :: i
integer*4 timeArray(3) ! Holds the hour, minute, and second
call itime(timeArray) ! Generate sequence of random number
write(6,*) rand ( timeArray(1)+timeArray(2)+timeArray(3) )
do i = 1, 9
write(6,*) rand(0)
end do
end program CreateRandomNumberSequence
qui donne par exemple:
5.86748123E-04
0.865334034
0.670398951
0.398759842
0.957542658
0.421938896
0.528346062
0.914853573
0.947230339
0.101967096
Recherches associées
Liens | Site |
---|---|
RAND — Real pseudo-random number | gcc doc |
A sample random number Fortran program | infohost |