【问题标题】:Making a randomized table with all different values?制作一个包含所有不同值的随机表?
【发布时间】:2022-01-09 08:35:39
【问题描述】:

我正在尝试制作一个占用更少代码空间的随机表。

当前代码:

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- some random number
2- a different random number
3- a different random number
4- a different random number

这确实给了我想要的输出,但是第 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 个索引长的随机表,而且很难通过。 谢谢。

【问题讨论】:

标签: lua roblox


【解决方案1】:

要具体回答您的问题,“您可以分配一个变量来给出一个随机数吗”,您可以像这样将一个函数保存到一个变量中:

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

与其手动添加这些值,为什么不使用循环插入任意数量的条目呢?虽然这是几行代码,但它更容易阅读,从长远来看可能会更好。

math.randomseed(tick())

local MyTable = {}

-- generate a bunch of random numbers
local entriesToAdd = 30
for i = 1, entriesToAdd, 1 do
    MyTable[i] = math.random(0, 100)
end

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    相关资源
    最近更新 更多