首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java RNG种子

Java RNG种子
EN

Stack Overflow用户
提问于 2017-01-15 18:51:04
回答 3查看 284关注 0票数 0

我的问题涉及Java;使用以下代码:

代码语言:javascript
复制
for (int s = 0; s < 600; s++) {
   Random r = new Random(s);
   System.out.println(r.nextDouble());
   System.out.println(r.nextDouble() + "\n-----");
}

这将产生600个随机数。我知道这有点奇怪,但在我的实际项目中,每次都需要一个新的随机数生成器。我收到的种子是连续的。产生的第一个随机双对于任何种子来说都是非常接近的,这是因为用于初始化的线性同余公式吗?

第二个双生成看起来实际上是完全随机的,这样做安全吗?首先生成一个未使用的随机数,然后开始使用它的实际原因,这样可以吗?

提前谢谢你

编辑:

让我澄清:

代码语言:javascript
复制
int possibleRoutes = 7;
void handlePacket(Packet p) {

    int chosenRoute = p.hash % possibleRoutes;
    // ...Other code...

}

代码语言:javascript
复制
int possibleRoutes = 7;
void handlePacket(Packet p) {

    Random r = new Random(p.hash);
    int chosenRoute = r.nextInt() % possibleRoutes;
    // ...Other code...
}

}

代码语言:javascript
复制
int possibleRoutes = 7;
void handlePacket(Packet p) {

    Random r = new Random(p.hash);
    r.nextInt();
    int chosenRoute = r.nextInt() % possibleRoutes;
    // ...Other code...

}

一个保证是每个包必须采取相同的路线。目前,数据包哈希本质上是连续的。有太多的可能散列来保持任何类型的状态来加快速度。

EN

回答 3

Stack Overflow用户

发布于 2017-01-15 18:59:43

你为什么要给一个特殊的数字作为种子?只需将其保留为空,那么随机构造函数将为您选择一个种子。

代码语言:javascript
复制
for (int s = 0; s < 600; s++) {
     Random r = new Random();
     System.out.println(r.nextDouble());
     System.out.println(r.nextDouble() + "\n-----");
   }

请参阅Role of seed in random number generation

票数 0
EN

Stack Overflow用户

发布于 2017-01-15 19:02:35

调用默认构造函数,该构造函数使用nanoTime作为种子。这样,每次迭代都不需要生成新的种子来创建对象。

代码语言:javascript
复制
//loop through number of numbers needed
for(int i = 0; i < 100; i +)
    //Calls default constructor
    Random r = new Random();
    System.out.println(r.nextDouble()*.5);
票数 0
EN

Stack Overflow用户

发布于 2017-01-15 20:43:59

另一种选择是使用一个主随机数来为循环中的所有补贴随机图种子:

代码语言:javascript
复制
Random masterRand = new Random();
for (int s = 0; s < 600; s++) {
  Random r = new Random(masterRand.nextLong());
  System.out.println(r.nextDouble());
  System.out.println(r.nextDouble() + "\n-----");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41664966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档