我不知道这是Lua本身的bug还是我的操作有误。在任何地方都找不到相关信息。我正在使用Lua for Windows(Lua 5.1.4):
>return math.random(0, 1000000000)
1251258
此函数将返回0到10000000000之间的随机整数,这与预期相符。对于所有其他值,此函数似乎都能正常工作。但是如果添加一个单独的0:
>return math.random(0, 10000000000)
stdin:1: bad argument #2 to 'random' (interval is empty)
任何比这个数字更大的数字都会有同样的作用。 我试图弄清楚需要多高的数字才能导致这种情况,发现了更奇怪的事情:
>return math.random(0, 2147483647)
-75617745
如果值为2147483647,则会给我负数。如果超过这个值,它会抛出错误。如果低于这个值,它就可以正常工作。
这在二进制中是0b1111111111111111111111111111111
,恰好是31个二进制数字。我不确定这意味着什么。