Lua 5.2.1 - 随机数

Lev*_*han 1 random lua numbers

在Lua 5.2.1中,我尝试使用生成随机数

num = math.random(9)
Run Code Online (Sandbox Code Playgroud)

但是,每次我运行我的程序时:

num = math.random(9)
print("The generated number is "..num..".")
Run Code Online (Sandbox Code Playgroud)

我得到相同的号码.

brendan@osiris:~$ lua number 
The generated number is 8.
brendan@osiris:~$ lua number 
The generated number is 8.
brendan@osiris:~$ lua number 
The generated number is 8.
Run Code Online (Sandbox Code Playgroud)

这很令人沮丧,因为每当我尝试生成一个新数字并重新启动程序时,我都会得到相同的序列.

是否有不同的生成数字的方式?

另外,我已经调查过了

math.randomseed(os.time())
Run Code Online (Sandbox Code Playgroud)

但我真的不明白.如果这确实是解决方案,你可以解释它是如何工作的,它做了什么,以及我会得到多少数字?

谢谢,

  • 布伦丹

lhf*_*lhf 5

这对Lua来说并不特别.伪随机生成器通常这样工作:它们需要一个种子来启动它们生成的序列并不是真正随机的,而是实际上给定种子的确定性.这对于调试是一件好事,但对于生产,您需要以"随机"方式更改种子.一种简单而典型的方法是在程序开始时使用时间设置一次种子.