Lua 生成随机数

  |   0 评论   |   0 浏览
math.randomseed(tostring(os.time()):reverse():sub(1, 7)) 
local r = math.random(1,10);

就是把 time返回的数值字串倒过来(低位变高位), 再取高位7位。 这样, 即使 time变化很小, 但是因为低位变了高位, 种子数值变化却很大,就可以使伪随机序列生成的更好一些

以生成6位随机数为例

local rchars = {"1","2","3","4","5","6","7","8","9","0"}

local rc = ""
for i=1, 6 do
  local r = math.random(1,#rchars);
  rc = rc..rchars[r]
end

以上方式多次申请的时候,大概率会出现相同的随机数

然后就可以采用一开始的方式进行优化

local rchars = {"1","2","3","4","5","6","7","8","9","0"}

math.randomseed(tostring(os.time()):reverse():sub(1, 7)) 
local rc = ""
for i=1, 6 do
  local r = math.random(1,#rchars);
  rc = rc..rchars[r]
end

这样得到的随机数就比较分散随机了。



标题:Lua 生成随机数
作者:码霸霸
地址:https://blog.lupf.cn/articles/2020/12/25/1608860596462.html