program randomNumbers !///////////////////////////////////////////////////////////////////// !/ Para generar numeros aleatoris una computadora utiliza formulas / !/ La salida de estas formulas estan muy dispersa en el reango [0,1] / !/ Estas formulas comienzan con un valor inicial llamado "semilla" / !/ (Fortran en realidad usa varias semillas que se cargan en una / !/ array, el tamano de este array depende del sistema, en mi PC es8) / !/ Si la (las) semilla de entrada es siempre la misma el genrador de / !/ numeros aleatorios arroja siempre el mismo resultado en c/corrida / !/ La subrutina initRnadomSeed utilia e reloj de sistema para que las/ !/ semilla de entrada al generador (random_number(number)) varie en / !/ cada corrida. / !///////////////////////////////////////////////////////////////////// real :: randomNumber ! Esta subrutina me inicializa las semillas de forma que siempres sean distintas call initRandomSeed() ! Probar de correr el programa varias veces y ver que los diez numeros son siempre distintos do i= 1,10 call random_number(randomNumber) print*, randomNumber end do contains subroutine initRandomSeed() integer :: i, n, clock integer, dimension(:), allocatable :: seed call random_seed(size = n) allocate(seed(n)) call system_clock(count=clock) seed = clock + 37 * (/ (i - 1, i = 1, n) /) call random_seed(put = seed) deallocate(seed) end subroutine initRandomSeed end program randomNumbers