2010-12-02 6 views
1

작은 개념적 문제가 있습니다.자바 : 랜덤 setSeed

내 무작위로 씨를 뿌려야 내 레벨을 다시로드 할 때 항상 동일한 무작위 대가를 얻을 수 있습니다.

따라서 Random#setSeed을 사용해야합니다.

그때 가지고있는 문제는 다음

Random r = new Random(); 
r.setSeed(currentSeed); 

문제는 그때 합격/내 코드를 통해 r의 인스턴스를 가져해야했다는 것이다 할 필요가있다.

ClassA: 
    public static Random r; 
    private int currentSeed = ...; 
    initRandom(){ 
    r = new Radom(currentSeed); 
    } 

ClassB: 
    ... 
    //instead of Math.random(); 
    r.random(); 
    ... 

하지만 그건 아주 좋은 것 같지 않습니다

Math.Random(currentSeed); 

내가 지금 가지고있는 가장 가까운입니다 : C에 가까운 솔루션이있는 경우

알고 싶습니다.

아이디어가 있으십니까?

답변

1

예, 동일한 Random 인스턴스를 매개 변수로 전달하거나 전역 변수 (정적 변수 또는 싱글 톤)를 전달해야합니다.

0

클래스간에 동일한 무작위를 사용하고 재생산을 원하면 동일한 순서로 사용되어야합니다. 클래스가 다른 순서로 실행되는 경우 다중 스레드를 사용하면 다른 결과를 얻게됩니다.

+0

xml에서 읽거나 목록에서 스트로크 한 다중 스레드가 없으므로 항상 같은 순서로 정렬 ^^ –