如何创建一个值都不同的随机表格?

我想创建一个随机表格以便更好地组织代码,而且表格中的每个值都应该是随机的。

当前的代码如下:

math.randomseed(tick())
local MyTable = {math.random(0, 100), math.random(0, 100), math.random(0, 100), math.random(0, 100)}

for i, v in ipairs(MyTable) do
    print(i.."- "..v)
end

期望的输出应该是:

1- 一个随机数
2- 一个不同的随机数
3- 一个不同的随机数
4- 一个不同的随机数

这段代码确实可以给出我想要的输出结果,但是第3行 local MyTable = {...} 的长度让我很难处理,所以我想知道是否有一种方法可以分配一个变量来代替每个表格索引中的随机数。

我已经测试过以下代码:

math.randomseed(tick())
local rand = math.random(0, 100)
local MyTable = {rand, rand, rand, rand}

for i, v in ipairs(MyTable) do
    print(i.."- "..v)
end

但是这段代码存在的问题是因为 rand 是预定义的变量,它输出的是相同的数字给每一个索引。

如果你有解决方案,这对我来说将非常有帮助,因为我正在尝试与长度为30个索引的随机表格一起工作,这很难处理。 谢谢。

原文链接 https://stackoverflow.com/questions/70206457

点赞
stackoverflow用户2860267
stackoverflow用户2860267

为了特别回答你的问题,“你可以给一个变量分配一个随机数吗”,你可以像这样将一个函数保存到一个变量中:

local rnd = function() return math.random(0, 100) end
local MyTable = { rnd(), rnd(), rnd(), rnd() }

但是,为什么不使用循环来插入你想要的条目呢?虽然这需要更多的代码行,但它在阅读上要容易得多,从长远来看可能更好。

math.randomseed(tick())

local MyTable = {}

-- 生成一堆随机数
local entriesToAdd = 30
for i = 1, entriesToAdd, 1 do
    MyTable[i] = math.random(0, 100)
end

-- 打印结果
for i, v in ipairs(MyTable) do
    print(i.."- "..v)
end
2021-12-02 21:27:54