math.random() 只返回 1?

我试图生成一个 1 到 100 之间的随机数,但是当我打印出这个数时,它总是返回 1

这是我目前的代码:

local num = 100
local randomNum = math.random(1,num)
print(randomNum) --> 1
点赞
用户827263
用户827263

Lua 的 math.random() "是与 C 提供的基础伪随机生成器函数通信的接口"。如果你想在程序的后续运行中得到不同的结果,你需要使用 math.randomseed() 来种子随机数生成器。一个常见的方法是将伪随机数生成器通过当前时间进行种子初始化。

如果你将程序改为打印 math.random() 的10个结果,你将得到一系列看起来随机的10个数字,而且这个序列每次运行你的程序都会保持不变。

参见 C 语言中的 rand()srand() 函数。

请注意,C 的 rand() 通常不能产生高质量的伪随机数。它们可能对于游戏来说足够好,但对于密码学来说远远不够好。

(在我的系统上,每次运行您的程序,我得到的是 85。它会根据 C 运行时库的特性而有所不同。)

2020-04-13 22:57:38