数学库由一组标准的数学函数构成,包括三角函数(sin,cos,tan,atan等)、指数和对数函数(exp、log、log10)、取整函数(floor、ceil)、max和min、生成伪随机数的函数(random、randomseed),以及变量pi和huge。其中huge为Lua中可以表示最大的数字。
1、所有的三角函数都使用弧度单位,可以用函数deg和rad来转换角度和弧度。如果使用角度单位,可以像这样重新定义三角函数:
local sin,asin = math.sin,math.asin
local deg,rad = math.deg,math.rad
math.sin = function(x) return sin(rad(x)) end
math.asin = function(x) return deg(asin(x)) end
2、math.random用于生成伪随机数,可以用3种方式来调用它。如果在调用它时不提供任何参数,它将返回一个在区间[0,1]内均匀分布的伪随机实数。如果提供了一个整数n作为参数,它将返回一个在区间[1,n]内的伪随机整数。例如math.random(6) --区间[1,6]
3、math.randomseed用于设置伪随机数生成器的种子数,它的唯一参数就是这个种子数。对此通常的解决方法是使用当前时间作为种子数:
math.randomseed(os.time())
函数os.time返回一个表示当前时间的数字,一般这个数字表示从某个时间点开始到至今的秒数
4、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(tostring(os.time()):reverse():sub(1, 6)) --把time返回的数值字串倒过来(低位变高位),再取高位6位。这样,即使time变化很小,但是因为低位变了高位,种子数值变化却很大,就可以使伪随机序列生成的更好一些
----然后不断产生随机数
for i=1, 5 do
print(math.random())
end
5、所有的库函数