SplittableRandom有什么意义?

Car*_*elo 6 java concurrency

Java 8添加了一个称为的随机数生成器SplittableRandom,该生成器似乎旨在用于流。但是,尚不清楚它比更好或更有用ThreadLocalRandom。通过阅读文档,似乎算法已更改为具有更好的统计属性。也就是说,为什么不调用它BetterThreadLocalRandom并删除split方法呢?为什么会有人打电话split()

Car*_*elo 5

的用途SplittableRandom来自确定性随机数生成器。对于流,不同的线程可能使用不同的ThreadLocalRandom值,从而每次导致不同的计算。 Doug Lea在介绍课程时顺便提及了这一点:

“虽然ThreadLocalRandom选项在很多方面都很有用,但是您不想在高质量的蒙特卡洛模拟中使用它。”

如果模拟有有趣的结果,并且取决于特定的随机数序列,SplittableRandom那么您可以重复进行进一步的分析。

  • 普通随机可以做到这一点,但与 SplittableRandom 不同,它会在“next()”函数中付出同步成本。 (2认同)