Генератор случайных чисел в Фортране

Я тестирую код 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.

Другие вопросы по тегам