可以信任不常见的数学库吗?

时间:2009-02-14 04:47:03

标签: java random

有一个名为Uncommon Maths的Java库声称提供比Sun更好的随机数生成器,甚至可能是BouncyCastle。如何确定他们的图书馆是否可以信任?我相信Sun和BouncyCastle,因为很多重要的公司都在使用他们的东西。目前尚不清楚Uncommon Maths是否属于同一类别。有什么想法吗?

3 个答案:

答案 0 :(得分:8)

好问题;)

所有RNG算法都是比我自己聪明的人发明的众所周知的算法。我是程序员,不是数学家。我刚刚移植了原始的C代码。所以你必须希望我没有在转换中引入任何错误。

与大多数开源软件一样,没有任何担保。如果你想用它进行模拟,我认为这是一个非常好的选择。如果你想将它用于加密,那么Fortuna之类的东西会更好。

Uncommons Maths并不像某些库那样广泛使用。它每周下载5到20次。我不知道有多少人真正继续在严肃的应用程序中使用它。我将它用于evolutionary computation和一些与我一直玩的一些琐碎的扑克相关程序。

我在每个RNG实施上运行了Diehard,并没有强调任何缺陷。也就是说,迪哈德的结果并不是最容易解释的:

  

因此你不应该感到惊讶   偶尔的p值接近0或1,例如   如.0012或.9983。当有点流   真的很失败,你会得到p s of 0 or 1 to six or more places. By all means, do not, as a Statistician might, think that a p < .025 or p> .975 means that the RNG has "failed the test at the .05 level". Such p成百上千的   DIEHARD产生的,即使是好的   随机数发生器。所以请记住“p   发生”。

Uncommons Maths RNGs都满足这种模糊的成功定义。在0.025 ... 0.975范围之外有一个或两个p值,但没有“失败大”。这与使用Java的SecureRandom获得的结果相当(并且优于java.util.Random,它确实“失败大”)。

如果您想自己测试一下,分发版中会有一个名为DiehardInputGenerator的类。这将生成运行Diehard所需的12mb文件。

答案 1 :(得分:4)

不常见的数学声称通过了Diehard tests。这和我所知的一样可靠。

你可以随时成为一名科学家,并为自己重新进行这些测试作为独立检查。

答案 2 :(得分:0)

编写自己的测试。

可以使用chi-square test

对随机数生成器进行基本检查