在一般情况下,Lua 的随机数可以工作得很好。但我最近做的一个程序是这样的:程序会多次启动,每次随机选择一条记录。代码:

1
2
math.randomseed(os.time())
x = math.random()

  结果是:x 与时间呈完全的正相关。比如我隔一秒再运行这个程序,x 正好比上一次大 1 。这样的随机数显然并不能用。

  在 lua users wiki 上找到了关于这个问题的说明,就是说,至少在 Windows 上,第一个随机数不是那么随机。解决办法是:

1
2
math.randomseed(os.time())
math.random(); math.random(); math.random()

  先“弹出”前面几个随机数,用后面的就要好多了。

Links: