一尘不染

使用种子的Java随机数

java

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

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

    return num;
}

每次我提供种子并尝试生成100个数字时,它们都是相同的。
我怎样才能解决这个问题?


阅读 505

收藏
2020-03-11

共1个答案

一尘不染

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

选中此选项可了解伪随机生成和种子:

伪随机数发生器

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

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

你的代码可能应该像这样:

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