Lua:如何从数组中获取一个随机元素?

如何在 Lua 中从数组中获取一个随机元素? 例如,有一个数组:

array={"apple","orange","pear","dog","cat","goat"}

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

点赞
stackoverflow用户2858170
stackoverflow用户2858170

你可以通过索引操作 array[index] 来获取一个表元素。因此,为了获取一个随机元素,你只需要在 [1;#array] 的间隔内获取一个随机索引,其中 #array 是 array 中的元素数量。

local randomIndex = math.random(1, #array) -- 或者简写为 math.random(#array)
local randomElement = array[randomIndex]

https://www.lua.org/manual/5.4/manual.html#pdf-math.random

2021-11-03 11:33:14
stackoverflow用户11740758
stackoverflow用户11740758

通过移除并填充另一个表格避免重复...

do
 local array1 = {"apple", "orange", "pear", "dog", "cat", "goat"}
 local array2 = {}

 for i = 1, #array1 do
-- table.remove() 返回被移除的值, 所以它可以用作值
  table.insert(array2, table.remove(array1, math.random(#array1)))
 end

 print(table.concat(array2, ', '))
 -- 可能的返回值:return table.concat(array2, ', ', 1, 1), array2
end

例如输出...

橙子, 梨, 猫, 山羊, 狗, 苹果
2021-11-03 12:18:05