Генерация случайных чисел на Хаскеле - PullRequest
5 голосов
/ 19 августа 2011

Каков наилучший способ обработки случайных чисел в Haskell (или каковы компромиссы)?

Я действительно не видел авторитетного ответа.

Рассмотрите возможность минимизации воздействия на в противном случае чистые функции, как / когда нужно заполнять, производительность, безопасность потоков

1 Ответ

3 голосов
/ 19 августа 2011

ИМХО, лучшая идея - держать генератор в строгом состоянии .Тогда вы можете использовать обычный do -Syntax для работы с генератором.Заполнение выполняется только один раз - в начале основной программы (или в начале каждого потока).Вы можете избежать ввода-вывода, используя операцию split, которая выдает два случайных генератора из одного.(Разное, конечно).

Поскольку состояние все еще чисто, безопасность потоков может быть гарантирована.Кроме того, вы всегда можете выйти из состояния, передав функции случайный генератор.Это полезно, например, в случае автоматических модульных тестов.

...