我在许多不同的物理服务器上有一个大的分布式程序,每个程序产生许多线程,每个线程Math.random()在其操作中使用从许多公共资源池中抽取一块.
目标是在所有操作中均匀地使用池.有时,通过查看资源池上的快照看它在那一瞬间得到哪些部分(实际上可能是这样,但很难测量并确定),它似乎并不是随机的.
是否有比这更好的东西Math.random()(至少不是更糟)?
Math.random()基于java.util.Random,基于线性同余生成器。这意味着它的随机性并不完美,但对于大多数任务来说已经足够好了,而且听起来它应该足以满足您的任务。
但是,听起来您正在使用double返回值Math.random()在固定数量的选项之间进行选择,这可能会进一步降低随机性的质量。使用起来会更好java.util.Random.nextInt()- 只要确保重用同一个Random对象即可。
有时,通过查看资源池上的快照来查看当时获得的片段,它看起来并不那么随机
我们的大脑非常擅长发现完全随机的模式,所以这几乎没有任何意义。
| 归档时间: |
|
| 查看次数: |
4490 次 |
| 最近记录: |