gpt4 book ai didi

java - 生成 15 位随机数时,最后 3 位始终为零

转载 作者:行者123 更新时间:2023-11-30 06:15:59 25 4
gpt4 key购买 nike

我想使用 Java 在 1_000_0000_0000_0009_999_9999_9999_999L 之间生成一个随机数,所以我使用了以下代码,

final long MAX_NUMBER = 9_999_9999_9999_999L;
final long MIN_NUMBER = 1_000_0000_0000_000L;
System.out.print(Long.valueOf(new Random().nextLong() *
(MAX_NUMBER - MIN_NUMBER)));

代码的问题是,代码确实会生成 15 位随机数,但最后 3 位数字始终为零,有时会生成负数。

谁能告诉我为什么最后 3 位数字总是零?

这里是一些输出,

7160629848698886104000

-6581075034034719564000

6645937379553681443000

6363833355925386903000

最佳答案

nextLong() 可以返回任何 long 值,包括负值。将 nextLong() 的结果乘以 (MAX_NUMBER - MIN_NUMBER) 可能会导致溢出,并且不会为您提供所需范围内的结果。

您可以使用 Math.random() 代替:

System.out.print((long)(Math.random() * (MAX_NUMBER - MIN_NUMBER))+ MIN_NUMBER);

关于java - 生成 15 位随机数时,最后 3 位始终为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28137308/

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