local random = {}
local a = 25214903917 -- These Values for a and c are the actual values found
local c = 11 -- in the implementation of java.util.Random(), see link
local previous = 0
-- 接收一个整数 seed 作为随机序列种子。
function random.randomseed(seed)
previous = seed
end
local index = 0
-- 1> 无参调用, 产生 (0,1) 之间的浮点随机数
-- 2> 只有参数 n, 产生 1-n 之间的整数
-- 3> 有两个参数 n, m, 产生 n-m 之间的随机整数
function random.random( ... )
-- 获取随机数
local r = a * previous + c
previous = r
if r < 0 then
r = -r
end
-- 获取参数个数
local arg = { ... }
local count = 0
for k,v in pairs(arg) do
count = count + 1
end
-- 根据参数个数来确定取值
if count == 0 then
r = r%1000 -- 取0到1000的随机数,可按照自己意愿随意取值
r = r * 1.0
while true do
r = r/10
if r < 1 then
break
end
end
elseif count == 1 then
if arg[1] < 1 then
error "get random number error"
elseif arg[1] == 1 then
r = 1
else
r = 1 + r%(arg[1]-1)
end
elseif count == 2 then
if arg[2] < arg[1] then
error "get random number error"
elseif arg[2] == arg[1] then
r = arg[1]
else
r = arg[1] + r%(arg[2]-arg[1])
end
else
error "get random number error"
end
-- print (index,r)
index = index+1
return r
end
return random
lua 不调用外部函数自己实现获取随机数
最新推荐文章于 2024-11-07 22:38:40 发布