获取表中已经有一个键的值的索引(选择一个随机键/值对)

问题描述 投票:0回答:1

我想从表中选择一个随机的键/值对,但是使用math.random()不起作用。

--intialises randomization
math.randomseed(os.time()+30) --sets a random seed based on the time
math.random(); math.random(); math.random(); --clears presets

local phrases = {
["a"] = 3
["b"] = 7
["d"] = 4
["f"] = 8
["p"] = 5
}

local phrase = phrases[math.random(1,5)]

phrase将始终输出为nil。是否有一种使索引与math.random()一起使用的方法,或者我可以使用的另一种方法?

lua
1个回答
0
投票

[math.random(1, 5)返回1到5之间的数字。您的键是字符串。

您可以创建表(例如:数组-整数键),从那里获取随机键,然后访问phrases

local phrases = {
  ["a"] = 3,
  ["b"] = 7,
  ["d"] = 4,
  ["f"] = 8,
  ["p"] = 5
}

local keys = {}

for k in pairs(phrases) do
  table.insert(keys, k)
end

local phrase = phrases[keys[math.random(1,5)]]
© www.soinside.com 2019 - 2024. All rights reserved.