Java随机种子

时间:2016-04-20 06:17:30

标签: java random seed

我有一个java作业,我想要一些帮助。有一个测试程序使用随机数种子,它给我带来了相同结果的问题。

 boolean filled = true;
 while(filled)
     {
             int j = GRID_SIZE*GRID_SIZE;
             int k = random.nextInt(j);
             int l = k % GRID_SIZE;
             k = k/GRID_SIZE;
             while(grid[k][l] < 2)
             {
                     int newTile = random.nextInt(100);
                     if(newTile < 90) newTile = 2;
                     if(newTile >= 90) newTile = 4;
                     grid[k][l] = newTile;
                     filled = false;
             }
     }
}

随机对象作为参数传递给类,并在测试文件中有一些set seed。当我运行此方法两次时,我得到以下矩阵。 GRID_SIZE是一个全局变量。

[0 0 0 0]
[0 0 0 0]
[2 0 0 0]
[0 0 0 0]

但我应该得到

[0 0 0 0]
[0 0 0 0]
[0 2 0 0]
[0 0 2 0]

知道我的代码有什么问题吗?

编辑:更新了代码和结果。我本来应该使用0-15之间的一个数字而不是0-3的两个数字。我还没有得到正确的结果。

还有像这样传入的全局变量和随机参数。

private final Random random;

public Board(int size, Random random) {
this.random = random;
...etc.

我不知道这是否是正确的方法。

1 个答案:

答案 0 :(得分:0)

根据定义,使用相同种子初始化的两个Random实例将生成完全相同的伪随机序列。如果每次都需要它不同,那么你需要提供一个不同的种子,即long当前时间值足以满足种子的需要。