【问题标题】:use a random generated number in 2 methods and call random generator again在 2 种方法中使用随机生成的数字并再次调用随机生成器
【发布时间】:2017-07-23 01:03:46
【问题描述】:

我会尽量解释清楚。我有 2 种方法都使用随机生成器对象生成的 1 到 4 之间的数字。我在两种方法之外都创建了随机生成器对象,但我需要生成一个新数字,在一种方法中使用它并使用在另一种方法中生成的相同数字,然后为同一进程生成另一个数字。但我不知道如何在两种方法之外生成一个数字,在两种方法中使用它,然后生成另一个数字以在两种方法中使用。两种方式都会轮流使用。

【问题讨论】:

  • 您可以在每种方法中将 RNG 播种到相同的种子吗?
  • 我该怎么做
  • @z123 查看 Java 的 Random 类文档。寻找提到播种的东西。查看文档以查找所需内容是您需要培养的一项关键技能。
  • “我会尽量解释清楚”。如果您没有发布代码,您的工作就不会做得很好。

标签: java loops object random


【解决方案1】:

首先,如果这两个方法都是从同一个方法调用的,您可以简单地将生成的随机数作为参数传递给每个方法。但是,您可以在不同时调用这两个方法的情况下达到类似的效果。您可以通过使用两个单独的Random 对象来执行此操作,这些对象的种子值相同。所以你会做类似的事情

long seed = System.currentTimeMillis();
Random randa;
Random randb;

然后在创建Random 对象的构造函数中执行以下操作

randa = new Random(seed);
randb = new Random(seed);

然后在一个函数中调用randa,在另一个函数中调用randb。

【讨论】:

  • 但是一种方法会在另一种方法之前运行,因此毫秒数会改变最终结果。我需要它们两个具有相同的值
  • 您在这两种方法之外分配种子。只要种子设置在方法之外,并且两个 rand 都用它初始化,它们将生成完全相同的数字。此外,种子不一定是时间,我只是将其用作示例,因为它是普通种子。它可以每次使用单独的 RNG 生成,甚至可以硬编码到程序中。
猜你喜欢
  • 2015-03-14
  • 2014-05-21
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多