寻找一种通用的方式来获得N个项目中的1个机会。假设你有50%的机会成为狮子,20%的机会成为老虎,30%的几率成为熊。其中一个必须被选中,并且%of chances的数量是无限的,并且通过调用方法是未知的,并且返回的值将是你将要的。
类似的东西:
本地动物= PickAnimal([?对传入的数据结构开放])
答案 0 :(得分:1)
这样的事情可能有用:
local function pickAnimal(t)
local p, acc = math.random(), 0
for name, prob in pairs(t) do
acc = acc + prob
if p < acc then return name end
end
return nil
end
math.randomseed(os.time())
print(pickAnimal({lion = 0.5, tiger = 0.2, bear = 0.3}))