2010-12-02 186 views
1

我有一个小概念问题。Java:随机设置种子

我需要给我的随机播种,这样当我重新加载自己的关卡时,我总是会得到相同的自由度。因此我需要使用Random#setSeed

我有那么问题是,然后我需要做一个

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

的问题是,我有那么必须要通过/穿过我的代码获取的r此实例。

我想知道是否有解决方案接近C:

Math.Random(currentSeed); 

我现在拥有的最接近的是:

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

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

但这似乎并不很好。

任何想法?

回答

1

是的,你需要传递相同的Random实例,无论是作为参数,还是通过全局(静态变量或单例)的均值。

0

如果您在类中使用相同的随机数,并且需要可复制性,则需要确保它以相同的顺序使用。如果您的课程按不同的顺序执行,例如如果它的多线程你会得到不同的结果。

+0

没有多线程,从一个xml中读取并在列表中进行排序,所以我总是发出相同的命令^^ – 2010-12-02 08:37:58