我有一个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.
我不知道这是否是正确的方法。
答案 0 :(得分:0)
根据定义,使用相同种子初始化的两个Random
实例将生成完全相同的伪随机序列。如果每次都需要它不同,那么你需要提供一个不同的种子,即long
当前时间值足以满足种子的需要。