如何在 Java 中生成随机 double ?
所有教程仅展示如何在一定范围内生成,但我希望所有 double 都可能。
是否有什么东西可以将所有位打乱并给我数字?
最佳答案
您可以做的是生成一个随机 64 位值。 这可以给你非数字和+/-无穷大。
Random rand = new Random();
double d = Double.longBitsToDouble(rand.nextLong());
注意:随机仅产生 2^48 个可能的 long
值。您可以使用 SecureRandom 生成所有可能的 64 位值,但这要慢得多。
就实数而言,您的兰特是 [-Double.MAX_VALUE, Double.MAX_VALUE] 对于所有可能的表示形式,分布是均匀的。
你有大约 1/4096 的机会得到 NaN。您可以循环此操作以丢弃任何不需要的值。
关于Java生成随机 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30061702/