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

Java在不同jvm或不同机器上的Math.random()有多随机

葛驰
2023-03-14
问题内容

我在许多不同的物理服务器上都有一个大型的分布式程序,每个程序都产生许多线程,每个线程Math.random()在其操作中都使用许多通用资源池中的内容。

目标是在所有操作中平均利用池。有时,通过查看资源池上的快照来查看它在那一刻正在获得的片段,看起来并没有那么随机(实际上可能是,但是很难确定和找出来)。

有没有比它更好Math.random()且表现同样好(至少没有差很多)的东西?


问题答案:

Math.random()是基于java.util.Random,它基于线性同余生成器。这意味着它的随机性不是完美的,但对于大多数任务来说已经足够了,而且听起来对于您的任务应该足够了。

但是,听起来您正在使用double返回值Math.random()在固定数量的选项之间进行选择,这可能会进一步降低随机性的质量。最好使用java.util.Random.nextInt()-只需确保重用同一Random对象即可。

有时,通过查看资源池上的快照以查看其在瞬间获得的片段,看起来并不是那么随机

我们的大脑非常擅长以完全随机的方式发现模式,因此几乎没有任何意义。



 类似资料:
  • 我正在使用java-8进行多个Spring boot项目,但现在其中一个需要转移到java-11。所以我需要在笔记本电脑上安装两个版本。那么如何在同一台机器上为不同的项目处理不同的JAVA版本呢?

  • 问题内容: 我想在我的应用程序中使用Redis作为分布式缓存。要求之一是具有Active Active可用性,这意味着我在一个地方拥有一个数据中心,而在其他地方拥有另一个数据中心。如果一个数据中心发生故障,我希望我的用户没有任何感觉,并希望能够从第二个站点的第一个数据中心获取所有数据并继续工作- 在第二个站点也拥有一个主数据库。可能吗? 问题答案: 您正在寻求一种主动-主动(又称为多主设备)解决方

  • 我有下面的代码来定位页面上的一个元素。 driver.findElement(by.xpath(“//div[text()='add']”)).click(); 上面的代码在 机器1:Windows 7 64位,Firefox浏览器,selenium-java-2.45.0 但在运行时单击另一个web元素

  • 我有5个不同的jmeter脚本。这5个不同的jmeter脚本是在5个不同的jmx文件中准备的。 < li>Test1.jmx < li>Test2.jmx < li>Test3.jmx < li>Test4.jmx < li>Test5.jmx 我想在不同的机器上分布式运行这5个jmx文件。在我的架构中,我想有一个主服务器和5个从服务器。这个主服务器将控制5个从服务器。 例如: Test1.jmx

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

  • rabbitMQ教程部分中的hello world示例只要求使用不同机器的ip更改主机名。但这对我不起作用。我已尝试将外部IP地址绑定到Rabbit MQ服务器​ 但这不起作用。我还需要对配置文件或代码执行其他操作吗? 这是发送代码 还有我在另一台机器上运行的接收代码 我得到的错误是 我感谢你们花时间帮助我。