当前位置: 首页 > 面试题库 >

使用种子的Java随机数

刘运浩
2023-03-14
问题内容

这是我的代码,使用种子作为参数来生成随机数:

double randomGenerator(long seed) {
    Random generator = new Random(seed);
    double num = generator.nextDouble() * (0.5);

    return num;
}

每次我提供种子并尝试生成100个数字时,它们都是相同的。
我怎样才能解决这个问题?


问题答案:

如果你给相同的种子,那是正常的。这是允许测试的重要功能。

选中此选项可了解伪随机生成和种子:

伪随机数发生器

伪随机数生成器(PRNG),也称为确定性随机位生成器DRBG,是一种用于生成近似于随机数属性的数字序列的算法。该序列不是真正随机的,因为它完全由相对较小的一组初始值(称为PRNG状态)确定,该初始值包括一个真正的随机种子。

如果要使用不同的序列(通常在不调整或调试算法时使用),则应调用零参数构造函数,该构造函数使用nanoTime尝试每次获取不同的种子。Random当然,该实例应保留在你的方法之外。

你的代码可能应该像这样:

private Random generator = new Random();
double randomGenerator() {
    return generator.nextDouble()*0.5;
}


 类似资料:
  • 问题内容: 在我的代码中,我在不同的类中使用随机数。如何定义随机种子?我可以为主代码中的所有类定义此种子吗? 问题答案: 您可能需要使用特殊的Random类。它使您可以更好地控制随机数。为此,您首先需要创建一个新的随机对象。 然后通过生成一个新的数字 http://docs.oracle.com/javase/6/docs/api/java/util/Random.html

  • 当你将本章节的程序运行了几遍后,你就会发现,我们所得到的随机数值都是一样的。很明显,他们不是所谓的随机出现的。 伪随机数出现的特性之一是如果一连串随机数出现的起始点一样,则这一串数字始终是一样的。随机数出现的起始点称作种子。每次运行C++程序时,它默认将随机数种子保持一致。 当你调试程序时,产生相同的序列对你是非常有用的。当你修改程序时,就可以有一个更好的比对。 如果你想换一组随机数,可以使用sr

  • 问题内容: 我脑子里有一个大问题: 我可以使用种子数生成随机数: 但是我不明白的是那颗种子的作用。例如,有什么区别 该代码具有以下内容: 问题答案: 当您向one-arg 构造函数 提供特定的硬编码种子时,每次您运行该程序时,将生成的随机数将始终相同。当您需要可预测的随机数源时就需要这样做。 但是,当您不提供种子时,构造函数将根据为您选择一个种子。每次运行程序时,随机数都会不同,因为种子每次都会不

  • 问题内容: 我正在为学校项目这样做(因此我不能使用任何高级功能),并且我正在使用Python 2.6.6。 我有一个从1到1000的数字列表,我的种子将是448。 如何使用该种子生成随机序列,以便列表中的数字位于不同的索引中? 知道种子后,是否有可能将列表中的元素返回到初始位置? 抱歉,如果我的问题令人困惑,但是英语不是我的母语。 谢谢。 问题答案: 结果是 您的列表现已伪随机化。 “伪”很重要,

  • 例如下面的代码。它有一个随机类。然而,它总是在任何地方产生相同的输出。在这种情况下,哪一项是种子? 来源:link

  • 我希望你一切都好!我使用依赖于时间的随机数进行加密。但这使得我的加密可以被破解……我的问题是,我如何在运行随机码后制作每次都不一样的随机码,并且不使用种子时间。大多数时候我们是这样随机的:srand((无符号)时间(0));cout