Является ли генератор случайных чисел в Haskell потокобезопасным?

Используется ли один и тот же «глобальный генератор случайных чисел» для всех потоков или каждый поток получает свой собственный?

Если один из них является общим, как я могу обеспечить безопасность потоков? Подход, использующий getStdGen и setStdGen , описанный в главе «Монады» Real World Haskell , не выглядит безопасным.

Если каждый поток имеет независимый генератор, будут ли генераторы для двух потоков, запускаемых в быстрой последовательности, иметь разные начальные числа? (Они не будут, например, если начальное значение - это время в секундах, но миллисекунды могут быть нормальными. Я не понимаю, как получить время с разрешением миллисекунды из Data.Time.)

15
задан Guy Coder 15 December 2013 в 15:00
поделиться