2014-03-31 81 views
0

我知道种子在这里已经有很多问题了,但我仍然在努力寻找,但如果这似乎是重复的,我很抱歉!基本上我会提示用户输入值(这将是种子),然后使用该种子生成随机值。我的代码有两个独立的文件,但我会尽量保持这种组织。在Java中为随机数生成器使用特定种子

文件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

问题是什么? – libik

回答

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个构造函数,其中一个接受种子参数,另一个构造函数基本上为您创建一个。

+0

谢谢,我不能相信我错过了。对不起,第一次没有很好地解释它。唯一的问题是,由于某种原因,当我使用与我的教授相同的种子时,我获得的输出会略有不同,之前曾听说过这种情况?我假设它是另一个错误的地方...:/ – user133707

+0

发生在我们最好的...至于不同的序列,我不知道...这个程序运行多个线程,偶然吗?这会对随机数字序列的可重复性造成一些问题。 – Michael

+0

没有。 :s我的输出结果是(下面的第一行),而我的教授输出结果是(下面的第二行)------------------------ -------------------------------------------------- -------------------------------------------------- ------------- [1,0] [2,0] [3,0] [3,1] [4,1] [5,1] [5,2] [ 5,3] [5,4] [5,5] ----------------------------------- ----------------------------------------------- [1 ,0] [2,0] [3,0] [4,0] [5,0] [5,1] [5,2] [5,3] [5,4] [5,5] 所以我完全丧失了为什么开始和结束会匹配,而中间不会。嘎,现在把我的头发拉出来。 – user133707