gpt4 book ai didi

java - Random 和 RandomGenerator 的区别

转载 作者:行者123 更新时间:2023-11-29 07:48:58 25 4
gpt4 key购买 nike

这个项目的主类是acm.program.GraphicsProgram; GraphicsProgram

早些时候在我的项目上工作时,我需要在 Pong 游戏中稍微随机化球的运动,并通过使用 import java.util.Random; 找到了解决方案,然后我使用了这段代码(每次都执行球从玩家的 Racket 上反弹,这使得球在每场比赛中的移动方式不同):

Random rand = new Random();
boolean bool = rand.nextBoolean();
if (bool)
if (dx > 0)
dx += 1;
else
dx -= 1;
else if (dy > 0)
dy += 0.5;
else
dy -= 0.5;

其中dxdy分别是球的水平和垂直速度。

但今天在大学讲座中,我们看到了不同的方法(与第一种方法无关,我自己认为第一种方法更早),使用

导入 acm.util.RandomGenerator;

然后

RandomGenerator rgen = RandomGenerator.getInstance();
boolean bool = rgen.nextBoolean();

这两个类(Random 和 RandomGenerator)之间有什么区别吗?如果是这样,哪个更好用?我不太明白什么是 getInstance(); 以及为什么在使用 Random 类时不需要它。

最佳答案

ACM RandomGenerator 有一些额外的便利方法,例如用于选择随机颜色的 nextColor()

它还通过其 getInstance() 类方法提供了一个全局生成器。根据评论,听起来构造函数使用当前时间作为种子。这是一个很大的缺陷,可能会导致不同的生成器实例产生相同的随机数序列的错误。为了解决这个问题,他们建议只使用 RandomGenerator 的一个实例,通过 getInstance() 方法访问。

一般来说,最好使用java.util.Random,因为它不会在你的程序中引入第三方依赖,而且它使用了更好的播种算法'不受 ACM 实现缺陷的影响。

关于java - Random 和 RandomGenerator 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22843536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com