gpt4 book ai didi

java - C 与 Java 中的随机数生成

转载 作者:太空宇宙 更新时间:2023-11-04 05:19:20 25 4
gpt4 key购买 nike

我很想知道为什么 C 中的 random_number=a+rand()%b; 会产生一个介于 a 和 b(不包括 b)之间的随机数。但在 Java 中,此代码将不起作用。我知道在 Java 中执行此操作的正确方法是 random_number=a+(Math.random()*(b-a)); 但我很想知道为什么会有差异?这在数学上不是相同的操作吗?我也明白随机函数的返回类型不同,但这种差异如何解释输出的差异?抱歉,如果这看起来像是一个微不足道的问题,但我还是很好奇。

最佳答案

区别在于每个随机生成器的作用。

在 Java 中,Math.Random返回 0(含)到 1(不含)范围内的伪随机数。因此它必须按范围的宽度 b - a 放大,然后按范围的起点 a 移动。

在 C 中,rand()返回 0RAND_MAX 范围内的数字(我的 RAND_MAX32767),所以 %b 用于控制范围的宽度,范围的起点移动a

关于java - C 与 Java 中的随机数生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19102217/

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