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