如何在Java中重用随机种子,使我的nextInt()再次使用相同的值?
我首先调用我的如何在Java中重用随机种子,使我的nextInt()再次使用相同的值?,java,random,Java,Random,我首先调用我的randomGenerator对象,如下所示: Random randomGenerator = new Random(5); for (int i = 0; i < intObjects.length; i++){ intObjects[i] = randomGenerator.nextInt(Integer.MAX_VALUE); } Random Random generator=新随机数(5); for(int i=0;i
randomGenerator
对象,如下所示:
Random randomGenerator = new Random(5);
for (int i = 0; i < intObjects.length; i++){
intObjects[i] = randomGenerator.nextInt(Integer.MAX_VALUE);
}
Random Random generator=新随机数(5);
for(int i=0;i
现在,如果我想用相同的原始随机生成的值重新初始化我的数组(在对它做了一些更改并进行了一些测试之后),我该如何做呢?如何重用种子?在代码中,种子是传递给:
5
的长参数
所以每次运行它时,都会得到相同的值
Random randomGenerator = new Random(5);
新随机数(5);这就是你如何播种你的发电机。如果继续此操作,您将获得与以前相同的数字
randomGenerator = new Random(5);
这就是解决办法。(不需要新对象)修复种子,就是这样
Random randomGenerator = new Random(5);
System.out.println(randomGenerator.nextInt(Integer.MAX_VALUE));
randomGenerator = new Random(5);
System.out.println(randomGenerator.nextInt(Integer.MAX_VALUE));
randomGenerator = new Random(5);
System.out.println(randomGenerator.nextInt(Integer.MAX_VALUE));
randomGenerator = new Random(5);
System.out.println(randomGenerator.nextInt(Integer.MAX_VALUE));
结果:
1568779487
1568779487
1568779487
1568779487您只需存储种子并在新时间初始化随机生成器。请查看以下代码:
// Generate one uniq seed
long seed = System.currentTimeMillis();
// Create your random with the seed
Random randomGenerator = new Random(seed);
// Use it
for (int i = 0; i < intObjects.length; ++i) {
intObjects[i]=randomGenerator.nextInt(Integer.MAX_VALUE);
}
// Do what you want
// ...
// Regenerate your random
randomGenerator = new Random(seed); // Maybe you can also use randomGenerator.setSeed(seed)
// Use it again
for (int i = 0; i < intObjects.length; ++i) {
intObjects[i]=randomGenerator.nextInt(Integer.MAX_VALUE);
}
//生成一个uniq种子
长种子=System.currentTimeMillis();
//创建你的随机种子
Random randomGenerator=新随机(种子);
//使用它
for(int i=0;i
我想我对是否可以重用该对象感到困惑。我试图再次使用randomGenerator
,但不知道如何使用,也没有真正编译。现在我用同样的种子做了一个新的物体,是的,它工作了。确认我不能重复使用同一个对象?这是正常的方式。哦,好吧,我有点困惑。我不认为我可以在已经初始化的对象上创建一个新的随机变量(5),但这是有意义的。从第二个答案中理解“不需要新对象”是正确的,但您创建了一个。如果要重复使用同一对象,可以使用randomGenerator.setSeed(5)
。对。它是Random()的新实例,但被分配给“旧”randomGenerator=)。setSeed()函数更好,我忘记了这个函数。