需要一个快速的 Java beta 分布随机数生成器
-
20-09-2019 - |
题
我需要在某些速度关键的代码中生成具有 beta 分布的随机数。目前我正在使用 numerics4j 库中的 BetaRandomVariable() 类 - 但目前代表了我代码的 CPU 使用率的大约 95%!
谁能推荐一种更快的方法来生成这些随机数?
解决方案
您可以看一下 NumPy的随机数生成器。他们在C,但代码比较可读permissively许可,所以他们可以很容易地移植到Java。你并不需要移植的基本梅森倍捻机发电机作为Java有一个在其标准库,只需要数形成梅森倍捻机,并把它转换成一个Beta分布的代码。我移植的大部分NumPy的随机数生成器,以d,发现他们是非常有效的,你可能会发现同一个Java编写的。
其他提示
我发现 Mersenne Twister 算法的更快 Java 实现在许多应用程序中都很有用,可以从这里获得: http://www.cs.gmu.edu/~sean/research/
不隶属于 StackOverflow