lua 不呼叫外部函式自己實現獲取隨機數
阿新 • • 發佈:2018-12-24
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