Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中重用随机种子,使我的nextInt()再次使用相同的值?_Java_Random - Fatal编程技术网

如何在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()函数更好,我忘记了这个函数。