Генератор случайных чисел в Фортране
Я тестирую код RNG, как указано в ссылке (код fortran 77):
https://www.cisl.ucar.edu/zine/96/spring/articles/3.random-6.html
который применяет алгоритм Park & Miller.
вызов функции программы
call srand(seed)
x=rand()
Однако программа, похоже, не реагирует на заполнение с помощью srand(), т. Е. Значение x не зависит от начального заполнения и всегда равно ~0,218. Я подозреваю, что это связано с определением общего блока и блока данных, так как значение x эквивалентно установке начального числа в виде 123456789, которое является значением инициализации, определенным в блоке данных.
Есть идеи?
Я собираю с Gfortran.
1 ответ
Хорошо, проблема в том, что оригинал srand
а также rand
можно назвать. Я переименовал функции в srand2
а также rand2
и все начинает работать как положено.
За seed = 1
результат 7.82636926E-06
и для seed = 2
результат 1.56527385E-05
, Проверял это в гфортране и в фортране Intel.