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

跨系统和版本的Java伪随机数的可重复性?

轩辕炎彬
2023-03-14
问题内容

给定初始整数参数,我需要生成受控的伪随机数序列。为此,我使用了标准的Java
Random类,该类由整数参数设定。我想确保在可预见的将来(甚至更多),我将在整个系统(操作系统,还有Java / JDK版本)中生成相同的序列。

总结:Java是否可以确保其 实现版本 之间的伪随机数生成器具有可再现性/可移植性?


问题答案:

是。

该javadoc的解释:

此类的实例用于生成伪随机数流。该类使用48位种子,可以使用线性同余公式对其进行修改。(请参见Donald
Knuth,计算机编程艺术,第2卷,第3.2.1节)。

如果Random使用相同的种子创建了两个实例,并且对每个实例进行了相同的方法调用序列,则它们将生成并返回相同的数字序列。为了保证此属性,
将为class指定特定的算法Randomclass Random为了实现Java代码的绝对可移植性,Java
实现必须使用此处显示的所有算法。 但是,class Random允许子类使用其他算法,只要它们遵守所有方法的通用协定即可。



 类似资料:
  • 问题内容: 给定初始参数,我需要生成一个受控的伪随机数序列。为此,我使用了标准的python随机生成器,并以此参数作为种子。我想确保在整个系统(操作系统和Python版本)中生成相同的序列。 总结:python是否确保其 实现 和 版本 之间的伪随机数生成器具有可重复性/可移植性? 问题答案: 不,不是。模块的文档中没有这样的承诺。 该文档包含的内容是这样的: 在版本2.3中进行了更改:Merse

  • 我需要/想要随机(不是全部)生成密码。 我的工作:目前我正在用SecureRandom生成它们 我正在使用 然后像这样播种 目标:一种(最好是快速)创建随机数的方法,这些随机数在密码学上至少和SHA1PRNG安全随机实现一样安全。这些在JRE和Android的不同版本上需要相同。 编辑:种子由用户输入生成。 问题:

  • 问题内容: 在这种情况下,MAX仅为5,因此我可以一张一张地检查重复项,但是如何以更简单的方式进行检查呢?例如,如果MAX的值为20,该怎么办?谢谢。 问题答案: 最简单的方法是创建一个可能数字的列表(1..20或任何数字),然后用对其进行混洗。然后,只需考虑你想要的许多元素。如果你的范围最终等于你需要的元素数量(例如,用于洗牌的卡片),则这非常好。 如果你想要(说)1..10,000范围内的10

  • 用 Cargo 进行自动容器管理 在测试加入到 servlet 容器的 Web 应用程序时,编写符合逻辑的可重复的测试尤其需要技巧。在 Andrew Glover 的提高代码质量的这个续篇中,他介绍了 Cargo,这是一个以通用方式自动化容器管理的开源框架,有了这个框架,您可以随时编写符合逻辑的可重复的系统测试。 在本质上,像 JUnit 和 TestNG 一样的测试框架方便了可重复性测试的创建。

  • 本文向大家介绍PHP的伪随机数与真随机数详解,包括了PHP的伪随机数与真随机数详解的使用技巧和注意事项,需要的朋友参考一下 首先需要声明的是,计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”。其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发展,它也不会产生一串绝对随机的随机数。计算机只能生成相对的随机数,即伪随机数。 伪随机数并不是假随机数,这里的“伪”是有规律的意思,就是计算

  • 新手,我正在制作一个程序,生成一个带有适当后缀的随机序数(即1、2、3…)我无法获得randomInt();工作。我不断收到以下错误: 我在Google和Stack Overflow上搜索了一个无济于事的解决方案。我甚至从互联网上复制和编译了其他使用随机Int()的程序;它们都产生了同样的错误。你能告诉我我做错了什么吗?这是我的程序代码: 欢迎对我的节目提出批评。谢谢