使用种子的 Java 随机数

2022-08-31 17:45:27

这是我使用种子作为参数生成随机数的代码:

double randomGenerator(long seed) {
    Random generator = new Random(seed);
    double num = generator.nextDouble() * (0.5);

    return num;
}

每次我给一个种子并试图生成100个数字时,它们都是一样的。
我该如何解决这个问题?


答案 1

如果你给同样的种子,这是正常的。这是允许测试的一个重要功能。

检查此内容以了解伪随机生成和种子:

伪随机数生成器

伪随机数生成器 (PRNG),也称为确定性随机位生成器 DRBG,是一种用于生成近似于随机数属性的数字序列的算法。该序列不是真正随机的,因为它完全由一组相对较小的初始值确定,称为PRNG状态,其中包括一个真正的随机种子。

如果你想有不同的序列(通常情况下不调整或调试算法),你应该调用零参数构造函数,它使用nanoTime每次尝试获取不同的种子。当然,此实例应保留在方法之外。Random

你的代码应该像这样:

private Random generator = new Random();
double randomGenerator() {
    return generator.nextDouble()*0.5;
}

答案 2

简单的方法是使用:

Random rand = new Random(System.currentTimeMillis());

这是生成数字的最佳方式。Random


推荐