В Scala я могу использовать либо java.util.Random
, либо Rng
library (или любой другой монадический API). Rng
(как другие монадические подходы) обеспечивает чистое решение без побочных эффектов, но, вероятно, имеет накладные расходы. Если нам нужно вычислить случайное значение, сначала построим вычисление и запустите его позже.Rng library vs. java.util.Random API
Я думаю, это проще (и, следовательно, более практично), чтобы использовать java.util.Random
в простых случаях (например, перетасовка колоды, катить кости, выбрать случайную выборку из набора). Теперь мне интересно, когда нужно использовать Rng
(или другие монадические подходы).
Что такое simpleest пример случайных вычислений, где Rng
сияет?
Речь идет не о скобках, а о правильности. Предположим, мне нужно иметь возможность тиражировать прогоны некоторого моделирования, в котором используются случайные числа. Это можно сделать с помощью «Случайного», но это может стать сложным, особенно перед лицом параллелизма и т. Д. Вы определенно не получите никакой помощи от системы типов. «Rng» имеет некоторые синтаксические накладные расходы, но в сложных ситуациях гораздо проще рассуждать. –
@TravisBrown Спасибо. Репликация запуска - хороший пример (хотя я думаю, что могу это сделать и с Java API). – Michael
@TravisBrown Я предполагаю, что у «Rng» есть некоторые накладные расходы. – Michael