在使用Lua进行开发的过程中,经常涉及到一些math数学库,这里对一些使用频率比较高的api进行整理:
1、math.min(x, ...)和math.max(x, ...):返回参数中的较小值、较大值。
local x, y = 10, 100
local min = math.min(x, y)
local max = math.max(x, y)
print(min, max) -- 10 100
2、math.ceil(x)和math.floor(x):向上取整、向下取整。
local x = 10.5
local ceil = math.ceil(x)
local floor = math.floor(x)
print(ceil, floor) -- 11 10
3、math.sqrt(x):返回x的平方根。
local x = 16
local sqrt = math.sqrt(x)
print(sqrt) -- 4
4、math.abs(x):返回x的绝对值。
local x = -16
local abs = math.abs(x)
print(abs) -- 16
5、math.fmod(x, y):取模运算,返回x除以y的余数。
local x, y = 16, 3
local fmod = math.fmod(x, y)
print(fmod) -- 1
注:还有一个和math.fmod比较类似的math.modf(x),math.modf(x)是返回x的整数部分和小数部分,返回的第二个结果一定是浮点数。
local x = 10.56
local modf1, modf2 = math.modf(x)
print(modf1, modf2) -- 10 0.56
6、math.pi:返回π的值。
local pi = math.pi
print(pi) -- 3.1415926535898
7、math.pow(x, y):返回x的y次方。
local x, y = 2, 4
local pow = math.pow(x, y)
print(pow) -- 16
8、math.random([m, [ ,n]]):返回一个随机数,当不带参数调用时, 返回一个【0, 1】区间内一致分布的浮点伪随机数,当以两个整数m与n调用时,返回一个【m, n】区间 内一致分布的整数伪随机数(值m-n不能是负数,且必须在 Lua 整数的表示范围内), 调用math.random(n)等价于math.random(1, n)。
math.randomseed(os.time())
print(math.random()) -- 返回一个0-1之间的随机数
print(math.random(6)) -- 返回一个1-6之间的随机数
print(math.random(10, 20)) -- 返回一个10-20之间的随机数
注:math.random应该和获取随机数种子的函数math.randomseed(x)配合使用,在使用math.random之前调用一下math.randomseed(os.time())即可,一般使用系统时间来作为随机数种子!
--------------------add on Oct. 14, 2019--------------------
生成随机数:
math.randomseed(tonumber(tostring(os.time()):reverse():sub(1,6)))
for i = 1, 5 do
print(math.random(5))
end
参考云风大大的Lua5.3 参考手册!