0

我知道之前已经有很多关于种子的问题,我已经看过很多但仍然在挣扎,如果这看起来重复,对不起!基本上我提示用户输入一个输入值(这将是种子),然后使用该种子生成随机值。我的代码位于两个单独的文件中,但我会尽量为您整理好这些文件。

文件 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();
4

1 回答 1

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。我认为这可能不是你打算做的。

您可能需要查看Random 的 Java SDK 文档。它有 2 个构造函数,一个接受种子参数,另一个基本上为您补充一个。

于 2014-03-31T02:54:44.703 回答