当前位置: 首页 > 知识库问答 >
问题:

使用当前时间vs不使用的随机数生成器

章安宜
2023-03-14

我想了解使用带有System.CurrentTimeMillis()作为种子的随机数生成器和仅仅使用默认构造函数之间有什么区别。就是这个有什么区别:

Random rand = new Random(System.currentTimeMillis());

还有这个:

Random rand = new Random();

我知道这些数字是伪随机的,但我还没有完全理解细节,以及它们是如何产生的,在使用当前时间作为种子时得到的“随机性”水平和使用默认构造函数时。

共有1个答案

拓拔松
2023-03-14

如果您希望您的随机序列在运行之间是相同的,您可以指定一个种子。通常,您不希望发生这种情况,因此您在每次运行时使用不同的种子,而System.currentTimeMillis()是常用的合理种子。如果您面临的是多线程(多个线程将同时初始化RNG),那么您可能希望避免使用System.CurrentTimeMillis()而让Java使用它自己的初始化。

 类似资料:
  • 问题内容: 我需要生成一个随机数。 看来该功能已不复存在。 我的选择是, 和 。 我在函数上找不到任何文档,头文件中也没有注释。 问题答案: ===== Swift 4.2 / Xcode 10 ===== 斯威夫特在引擎盖下用来完成工作。 ===== Swift 4.1 / Xcode 9 ===== 返回 0* 到 4294967295之间 的随机数 * 返回 0.0* 到 1.0 范围内的随

  • 这个脚本应该以随机生成的延迟滚动浏览网站上的每个容器。对于循环中的每次迭代,我要将ms的“暂停”替换为一个在和秒之间随机生成的数字。 随机数生成器: 就像这样工作很好。在每次迭代之后,会有2秒的暂停。但是,当我移除注释以添加行以随机化每次迭代之间的时间时,值(它应该滚动到哪个容器)一开始很好,但后来也变成随机的。 控制台输出: 我该怎么解决这个?

  • 我试图在Java程序中实现一个随机数生成器。我在用数学。random(),但这似乎效果不太好。然后我尝试使用SecureRandom,但这对我的游戏来说太长了。然而,我遇到了这个生成器,MersenNetWisterng随机数生成器。这似乎是我想要的;速度很快,但仍然是随机的。 然而,我已经很长时间没有用Java编写了,只有2个月,我对API既不了解也不了解。如果有人能帮我解释一下如何在我的代码中

  • 我用随机数生成了一个简单的游戏。如果数字是正确的,请在文本字段中输入正确的数字,并与ramdom数字游戏相匹配,然后再次尝试。但如果号码与ramdom匹配,请始终显示消息,然后重试。我在下面写下了迄今为止我所做的尝试。 lbltxt上打印的文本是什么。getText()我等于txtRam txtfield,但no等于罚款,但显示为重试

  • C++11引入了比C的优越得多的随机数库。在C中,您经常会看到以下代码: 因为以秒为单位返回当前时间,所以对程序的快速连续调用将产生相同的数字序列。解决这一问题的快速方法是在纳秒内提供一个种子: 在C++11中,我所知道的产生好随机数的最短程序是: 是不可移植的,不鼓励使用,因为它可能会选择较差的引擎,如。事实上,不推荐使用,因此首选。通常,我看到人们说用chrono来提供一个种子来代替: 这不仅

  • 本文向大家介绍使用js Math.random()函数生成n到m间的随机数字,包括了使用js Math.random()函数生成n到m间的随机数字的使用技巧和注意事项,需要的朋友参考一下 摘要: 本文讲解如何使用js生成n到m间的随机数字,主要目的是为后期的js生成验证码做准备。 Math.random()函数返回0和1之间的伪随机数,可能为0,但总是小于1,[0,1) 生成n-m,包含n但不包含