gpt4 book ai didi

java - 为什么 ThreadLocalRandom.current().nextInt(1, 255);返回值超出 [1, 254] 范围?

转载 作者:行者123 更新时间:2023-12-01 07:48:45 27 4
gpt4 key购买 nike

我正在尝试生成一个随机正 8 位整数。 ThreadLocalRandom.current().nextInt(min, max) 的文档明确指出,min 是最小包含边界,max 是最大独占边界。但是,如果我将 max 设置为任何 > 128 的值,我偶尔会得到负值。

这似乎与整数的位相关,但文档没有提及 nextInt() 的位。我确实需要尽可能多的正 8 位数字。当我只指定正范围 (1, 255) 时,为什么 nextInt() 返回负值?

byte aa = 1;
do {
aa = (byte) ThreadLocalRandom.current().nextInt(1, 128);
} while (aa > 0);
System.out.println(aa);

最佳答案

您将结果转换为字节byte 仅保存 -128 到 127 之间的数字,当 nextInt 返回大于 127 的数字时,它会溢出并翻转。

这不是 nextInt 的错误,而是转换为 byte 的错误。

关于java - 为什么 ThreadLocalRandom.current().nextInt(1, 255);返回值超出 [1, 254] 范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43508178/

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