2014-03-31 2 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; 
} 

시드가 임의 생성자에 전달된다는 점에 유의하십시오. 또한 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

관련 문제