java - java中的快速实值随机生成器

标签 java performance random double generator

java.util.Random.nextDouble() 对我来说很慢,我需要一些非常快的东西。

我做了一些谷歌搜索,我只找到了基于整数的快速随机生成器。这里有关于区间 <0, 1) 的实数吗?

最佳答案

如果你需要一些快速的东西并且可以访问 Java8,我可以推荐 java.utils SplittableRandom .它更快(~两倍快)并且具有更好的统计分布。
如果您需要更快或更好的算法,我可以推荐以下专门的 XorShift 变体之一:

  • XorShift128PlusRandom (更快更好)
  • XorShift1024StarPhiRandom (速度差不多,周期更长)

  • 有关这些算法及其质量的信息可以在 this big PRNG comparison 中找到。 .
    我做了一个独立的性能比较,你可以在这里找到详细的结果和代码:github.com/tobijdc/PRNG-Performance
    TLDR
    从不使用 java.util.Random , 使用 java.util.SplittableRandom .
    如果您需要更快或更好的 PRNG,请使用 XorShift 变体。

    关于java - java中的快速实值随机生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29193371/

    相关文章:

    python - 为什么当我切换随机变量 Z(X, Y) 的 X 和 Y 时,线性回归是错误的?

    java - 谷歌数据流 : how to parse big file with valid JSON array from FileIO. 可读文件

    javascript - 计算扑克牌局赔率

    jquery - 尝试将多个 div 倾斜到不同的随机 Angular

    ios - 对核心动画应用程序有什么优化方法建议吗?

    sql - 性能考虑 : Spread rows in multiple tables vs concentrate all rows in one table

    java - 如何获取方法打印的整数?

    java - 使用 Nashorn 但不使用 javax.script

    java - 后台服务 android java

    java - @Transactional 在 CDI Bean 的基类中被忽略