我知道此前已经有很多关于种子的问题,我已经看了很多,但我仍然在苦苦挣扎,对不起,如果这似乎重复了!基本上我正在提示用户输入值(将是种子),然后使用该种子生成随机值。我的代码分为两个单独的文件,但我会尽量为你保留这些文件。
文件1:
Random generator = new Random();
public RandomWalk(int gridSize){
gridSize = generator.nextInt();
this.gridSize = gridSize;
}
public RandomWalk(int gridSize, long seed){
generator.nextInt();
this.gridSize = gridSize;
}
文件2:
public static long seed = 0;
int i = 1;
System.out.println("Enter random seed (0 for no seed): ");
while (i == 1) {
seed = scan.nextInt();
if (!(seed == 0)) {
if (seed > 0) {
i++;
//Generate numbers based on seed entered
} else {
System.out.println("You need to enter a positive integer.");
}
} else {
System.out.println("Seed is 0, a random seed will be generated");
//Make this generate a random seed
i++;
}
}
public static void main(String[] args) {
getInput();
RandomWalk walk;
if (seed==0){
walk = new RandomWalk(gridSize);
} else {
walk = new RandomWalk(gridSize, seed);
}
walk.createWalk();
答案 0 :(得分:1)
你并没有真正提出问题,但我会尝试推断它。您的代码是否按预期工作?
我看到的一个问题是,接收种子的RandomWalk构造函数从不对种子做任何事情。试试这个:
Random generator;
public RandomWalk(int gridSize){
generator = new Random();
gridSize = generator.nextInt();
this.gridSize = gridSize;
}
public RandomWalk(int gridSize, long seed){
generator = new Random(seed);
gridSize = generator.nextInt();
this.gridSize = gridSize;
}
请注意,种子将传递给Random构造函数。此外,您对generator.nextInt()的调用是在第二个构造函数中进行的,而不将其返回值赋给gridSize。我认为这可能不是你打算做的。
您可能需要查看Java SDK documentation for Random。它有2个构造函数,一个接受种子参数,另一个基本上为你创建一个。