如何在java中生成0到2 ^ 32-1之间的随机数

jia*_*ian 4 java random unsigned

如何between 0 and 2^32-1在java中生成随机数?我写这个链接:

long[]num = new long[size + 1];
Random random = new Random();
for (int i = 1; i < size + 1; i++) {
num[i] = (long)random.nextInt()+(long)(1<<31);
System.out.println(num[i]);
}
Run Code Online (Sandbox Code Playgroud)

但它打印

-1161730240
-1387884711
-3808952878
-3048911995
-2135413666
Run Code Online (Sandbox Code Playgroud)

我不知道为什么..

ale*_*gen 8

如果你想从0到2 ^ 32-1,那么你应该使用Random.nextLong() & 0xffffffffL而不是Random.nextInt().

Java不支持unsigned类型,这意味着您int无法获取所需范围内的值.要解决这个问题,您可以使用long64位,并且可以获取所需范围内的值.