请考虑以下lua代码段:
local time = os.time() for _= 1, 10 do time = time + 1 print('Seeding with ' .. time) math.randomseed(time) for i = 1, 5 do print('\t' .. math.random(100)) end end
在Linux机器上,结果如预期的那样是随机数.但似乎至少在Mac OS X上,改变种子后的第一个随机数总是一样的!
我猜这与Lua依赖C rand()函数生成随机数这一事实有关,但有人有解释吗?
编辑:这是linux机器上面代码输出的摘录(即输出是预期的):
$ lua test.lua Seeding with 1232472273 69 30 83 59 84 Seeding with 1232472274 5 21 63 91 27 [...]
在OS X机器上,"Seeding with ..."之后的第一个数字始终为66.
检查这些链接.
http://lua-users.org/lists/lua-l/2007-03/msg00564.html
http://lua-users.org/lists/lua-l/2007-03/msg00572.html