Нет гарантии безопасности нитей или производительности резьбы для random_number
в целом. Стандарт Fortran вообще не знает OpenMP.
Отдельные компиляторы могут предложить вам некоторые гарантии, но они будут действительны только для версии, представленной в конкретном компиляторе. Например, текущая версия gfortran предоставляет поточно-ориентированный генератор случайных чисел и «Обратите внимание, что в многопоточной программе (например, с использованием директив OpenMP) каждый поток будет иметь свое собственное состояние случайных чисел». Other Компиляторы могут отличаться. В частности, компилятор, который ваш пользователь может захотеть использовать, может отличаться, и вы можете не знать об этом.
Доступны выделенные параллельные генераторы случайных чисел. Например, я использую модифицированную версию библиотеки, которая использует метод Ziggurat для нескольких распределений случайных чисел, была распараллелена Gib Bogle, и я добавил реализацию xoroshiro128 + в качестве основного алгоритма, похожего на тот, который использовался от Gfortran. Доступны и другие реализации подобных алгоритмов, и в стандартном C ++ есть несколько новых генераторов, которые фактически определены для использования специфицированного c алгоритма, так что вы можете их вызывать.