【问题标题】:Java : Random setSeedJava:随机 setSeed
【发布时间】:2010-12-02 08:20:32
【问题描述】:

我遇到了一个小概念问题。

我需要播种我的随机数,以便在我重新加载关卡时始终获得相同的随机数。

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

但这似乎不太好。

有什么想法吗?

【问题讨论】:

    标签: java random


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果您在各个类中使用相同的随机数并且想要重现能力,则需要确保它也以相同的顺序使用。如果您的课程以不同的顺序执行,例如如果它是多线程的,你会得到不同的结果。

      【讨论】:

      • 没有多线程,从 xml 读取并存储在列表中,所以我总是得到相同的顺序 ^^
      猜你喜欢
      • 1970-01-01
      • 2015-03-01
      • 1970-01-01
      • 2020-02-07
      • 2017-02-11
      • 1970-01-01
      • 2016-04-15
      • 2015-03-27
      • 2016-08-12
      相关资源
      最近更新 更多