Search code examples
javaperformancerandomdoublegenerator

Fast real valued random generator in java


java.util.Random.nextDouble() is slow for me and I need something really fast.

I did some google search and I've found only integers based fast random generators. Is here anything for real numbers from interval <0, 1) ?


Solution

  • If you need something fast and have access to Java8, I can recommend the java.utils SplittableRandom. It is faster (~twice as fast) and has better statistical distribution.

    If you need a even faster or better algorithm I can recommend one of these specialized XorShift variants:

    Information on these algorithms and their quality can be found in this big PRNG comparison.

    I made an independent Performance comparison you can find the detailed results and the code here: github.com/tobijdc/PRNG-Performance

    Futhermore Apache Commons RNG has a performance test of all their implemented algoritms

    TLDR

    Never use java.util.Random, use java.util.SplittableRandom. If you need faster or better PRNG use a XorShift variant.