我试图从表中随机选择一个键,然后随机化该随机键中的值。
示例表
items = {
["Rock"] = {min = 1, max = 5},
["Sand"] = {min = 4, max = 12},
["Glass"] = {min = 20, max = 45},
}
然后这个功能
function printTable()
local keys = {}
for k,v in pairs(items) do
table.insert(keys, k)
local keys = keys[math.random(1, #keys)]
local amount = math.random(v.min,v.max)
print(item, amount)
end
end
它打印一个随机键及其值,但随后它会打印更多的随机键,其中的值不会更低。
我要做的是,打印其中一个键,然后只打印所述键的值,这样,
Sand 6
要么
Glass 31
所以第四个。
任何帮助都是极好的!
因为没有预先定义表或通过循环索引收集表的索引,所以无法获取表的索引,您可以创建一个表来保存每个表的索引,然后使用它来随机选择要使用的项。
local indexes = {"Rock", "Sand", "Glass"}
与printTable
函数一起使用。
items = {
["Rock"] = {min = 1, max = 5},
["Sand"] = {min = 4, max = 12},
["Glass"] = {min = 20, max = 45},
}
local indexes = {"Rock", "Sand", "Glass"}
function printTable()
local index = indexes[math.random(1, 3)] -- Pick a random index by number between 1 and 3.
print(index .. " " .. math.random(items[index].min, items[index].max))
end
在这段代码中,您可以看到我如何在给定表中选择随机值。这将返回您正在查看的输出。
math.randomseed(os.time())
local items = {
["Rock"] = {min = 1, max = 5},
["Sand"] = {min = 4, max = 12},
["Glass"] = {min = 20, max = 45},
}
local function chooseRandom(tbl)
-- Insert the keys of the table into an array
local keys = {}
for key, _ in pairs(tbl) do
table.insert(keys, key)
end
-- Get the amount of possible values
local max = #keys
local number = math.random(1, max)
local selectedKey = keys[number]
-- Return the value
return selectedKey, tbl[selectedKey]
end
local key, boundaries = chooseRandom(items)
print(key, math.random(boundaries.min, boundaries.max))
随意测试它here