专否 写文章

东方不败

Nov 12, 2023
Follow

Lua使用math.random获取随机数

math.randomseed的用法

Lua使用math.random获取随机数每次获取的随机数都一样,这是因为Lua的随机数再调用math.random之前要调用一下math.randomseed,否则就会每次获取一样的随机数。

randomseed的值可以利用系统时间为种,从而达到相对随机。(我目前的理解,Lua的随机数是伪随机数)

简单一点的办法就是:

math.randomseed(os.time())

更复杂一点的办法,让随机数看起来更随机的方法:

math.randomseed(tonumber(tostring(os.time()):reverse():sub(1, 9)))

每调用math.random前,调用一下上面的方法之一即可。



math.random的用法

math.random的方法有三种:

  • math.random() 返回的是[0,1)的随机数;
  • math.random(n) 返回的是[1,n]的随机数;
  • math.random(m,n) 返回的是[m,n]的随机数。

切记调用math.random前调用math.randomseed。



有人说Luajit重写了random方法,可以不用调用randomseed了,这个我没有亲自实验,建议亲自实验后再确定,我的建议,还是使用一下randomseed,有备无患,Luajit的版本和开启模式会有一些不一样,在iOS上使用Luajit的非JIT模式,似乎并不生效。建议,凡事亲自试一下再使用。

喜欢这个文章 | 分享 | 新建跟帖