为什么 Random.nextInt() %16 偏斜而 Random.nextInt(16) 工作得很好?
Why is Random.nextInt() %16 skewed while Random.nextInt(16) works perfectly fine?
我正在编写一个将雪球视为彩弹的 Bukkit 插件。当我不小心使用了:
(byte) (random.nextInt() % 16)
而不是
(byte) (random.nextInt(16))
我注意到较低的数字比较高的数字出现得更多。为什么会这样?
例如:之前:
00010
01200
06001
30010
00502
例如:之后:
74108
73447
98956
17386
26574
random.nextInt()
也可以 return 负值,我的程序将负数视为零,加倍 使零出现的机会增加三倍。
我正在编写一个将雪球视为彩弹的 Bukkit 插件。当我不小心使用了:
(byte) (random.nextInt() % 16)
而不是
(byte) (random.nextInt(16))
我注意到较低的数字比较高的数字出现得更多。为什么会这样?
例如:之前:
00010
01200
06001
30010
00502
例如:之后:
74108
73447
98956
17386
26574
random.nextInt()
也可以 return 负值,我的程序将负数视为零,加倍 使零出现的机会增加三倍。