使用种子的 Java 随机数
这是我使用种子作为参数生成随机数的代码:
double randomGenerator(long seed) {
Random generator = new Random(seed);
double num = generator.nextDouble() * (0.5);
return num;
}
每次我给一个种子并试图生成100个数字时,它们都是一样的。
我该如何解决这个问题?
这是我使用种子作为参数生成随机数的代码:
double randomGenerator(long seed) {
Random generator = new Random(seed);
double num = generator.nextDouble() * (0.5);
return num;
}
每次我给一个种子并试图生成100个数字时,它们都是一样的。
我该如何解决这个问题?
如果你给同样的种子,这是正常的。这是允许测试的一个重要功能。
检查此内容以了解伪随机生成和种子:
伪随机数生成器 (PRNG),也称为确定性随机位生成器 DRBG,是一种用于生成近似于随机数属性的数字序列的算法。该序列不是真正随机的,因为它完全由一组相对较小的初始值确定,称为PRNG状态,其中包括一个真正的随机种子。
如果你想有不同的序列(通常情况下不调整或调试算法),你应该调用零参数构造函数,它使用nanoTime每次尝试获取不同的种子。当然,此实例应保留在方法之外。Random
你的代码应该像这样:
private Random generator = new Random();
double randomGenerator() {
return generator.nextDouble()*0.5;
}
简单的方法是使用:
Random rand = new Random(System.currentTimeMillis());
这是生成数字的最佳方式。Random