【发布时间】:2016-08-12 15:07:38
【问题描述】:
我有一个 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;
}
}
}
随机对象作为参数传递给类,并在测试文件中设置了一些种子。当我两次运行此方法时,我得到以下矩阵。 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.
我不知道这样做是否正确。
【问题讨论】:
-
为什么你“应该”得到这个结果?如果正在设置种子,则每次运行代码时都应该得到相同的结果......但不清楚为什么你认为你应该得到与你得到的结果不同的特定结果。
-
提供了一个测试文件,它告诉我应该得到什么。
-
它是否指定如何你打算得到那个?您可以通过多种方式实现这一点,这些方式虽然合理,但可能会为同一个种子提供不同的结果。