【发布时间】:2010-10-02 11:54:56
【问题描述】:
考虑以下 lua 代码 sn-p :
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。
【问题讨论】:
-
你在两台机器上使用相同的lua版本吗?可能是 Mac OS X 中的一个错误。
-
是的,我用的是最新的lua版本。