什么是处理Haskell随机数生成的最佳方法(或者说有什么权衡)?
我没有看到过权威的答案。
考虑:如何最小化对其他纯函数的影响,何时/如何进行种子设置,性能和线程安全。
我没有看到过权威的答案。
考虑:如何最小化对其他纯函数的影响,何时/如何进行种子设置,性能和线程安全。
在我看来,最好的想法是将生成器保持在严格状态记录中。然后您可以使用普通的do
语法来处理生成器。种子仅在主程序(或每个线程的开头)开始时执行一次。您可以通过使用split
操作避免IO,该操作从一个生成两个随机生成器。(当然不同)。
由于状态仍然是纯净的,因此可以保证线程安全性。此外,您始终可以通过向函数提供随机生成器来逃避状态。例如,在自动单元测试的情况下非常有用。