math.randomseed
(
os.time
());看完以下文章是math.randomseed()时间间隔太短造成的
Lua 生成随机数需要用到两个函数:
math.randomseed(xx), math.random([n [, m]])
1. math.randomseed(n) 接收一个整数 n 作为随机序列种子。
2. math.random([n [, m]]) 有三种用法: 无参调用, 产生 (0,1) 之间的浮点随机数; 只有参数 n, 产生 1-n 之间的整数; 有两个参数 n, m, 产生 n-m 之间的随机整数
对于相同的随机种子, 生成的随即序列一定是相同的。所以程序每次运行, 赋予不同的种子很重要。很自然想到使用系统时间作为随机种子,即:
math.randomseed(os.time()) ----然后不断产生随机数 for i=1, 5 do print(math.random()) end
可以看到前两次运行的随机数都是一样的。究其原因,就是 os.time() 返回的时间是秒级的, 不够精确, 而 random() 还有个毛病就是如果 seed 很小或者seed 变化很小,产生的随机序列仍然很相似。比如:
math.randomseed(100) print(math.random(1000)) math.randomseed(102) print(math.random(1000))
math.randomseed(tostring(os.time()):reverse():sub(1, 6))
数学库源码: http://www.lua.org/source/5.1/lmathlib.c.html
原文链接:http://blog.csdn.net/zhangxaochen/article/details/8095007