random - Lua math.random() 总是给出相同的数字?

标签 random lua random-seed

对于某些项目,我想要一个包含 0 或 1 的字符串。 所以我尝试了这个

local data = ""
for i=1, 5 do
    data = data .. math.random(2) - 1
end
print(data)

该程序始终给出 10111 作为结果。所以在搜索之后我得到了这个类似的问题。 Link 所以我改变了我的程序,就像该程序中提到的那样

local data = ""
for i=1, 5 do
    math.randomseed(os.time())
    data = data .. math.random(2) - 1
end
print(data)

还有这个

local data = ""
for i=1, 5 do
    math.randomseed(os.time())
    math.random(2)
    math.random(2)
    math.random(2)
    data = data .. math.random(2) - 1
end
print(data)

所以当我尝试这个时,它总是给出 1111100000 作为输出。为什么?? 以及如何纠正它以便我可以在字符串中获得随机 0 或 1?

最佳答案

在循环之前添加种子:

local data = ""
math.randomseed(os.time())
for i=1, 5 do
    data = data .. math.random(2) - 1
end
print(data)

如果您重新设定种子或重新运行程序,请确保已经过去超过 1 秒,因为 os.time() 返回以秒为单位的时间,用整数表示。

关于random - Lua math.random() 总是给出相同的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70508610/

相关文章:

javascript - 使用 parseInt() 将用户的 promt() 更改为数字的更好方法

lua - 尝试调用方法 'func'(零值)

Lua 没有覆盖#metamethod

search - 将种子添加到随机 sphinx 搜索中

java - 在 Math.random() 上设置种子

python - 使用来自 python 的硬件 rng

mysql - SQL 使用 where 条件选择单个随机行

lua - 为什么我的 LUA 解释器无法处理字符串键值?

java - 没有两个连续对象相同的随机选择序列

c - 随机 float