我知道之前已经有很多关于种子的问题,我已经浏览了很多,但仍在挣扎,如果这看起来重复,抱歉!基本上,我提示用户输入输入值(这将是种子),然后使用该种子生成随机值。我的代码位于两个单独的文件中,但我会尽力为您组织起来。
文件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();
最佳答案
你并没有真正问问题,但我会尝试推断它。是不是您的代码没有按您的预期工作?
我看到的一个问题是,接受种子的 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 个构造函数,一个接受种子参数,另一个基本上为您弥补了一个。
关于java - 在 Java 中使用特定种子作为随机数生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22752865/