Java:随机setSeed

时间:2010-12-02 08:20:32

标签: java random

我有一个小概念问题。

我需要随机播种,这样当我重新加载我的关卡时,我总是得到相同的radom。

所以我需要使用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();
  ...

但这似乎不太好。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

是的,您需要传递相同的Random实例,作为参数,或者通过全局(静态变量或单例)传递。

答案 1 :(得分:0)

如果您在类之间使用相同的随机数并且您想要重现性,则需要确保它以相同的顺序使用。如果您的类以不同的顺序执行,例如如果它的多线程你会得到不同的结果。