选择某事的机会百分比

时间:2018-03-29 23:15:26

标签: lua

寻找一种通用的方式来获得N个项目中的1个机会。假设你有50%的机会成为狮子,20%的机会成为老虎,30%的几率成为熊。其中一个必须被选中,并且%of chances的数量是无限的,并且通过调用方法是未知的,并且返回的值将是你将要的。

类似的东西:

本地动物= PickAnimal([?对传入的数据结构开放])

1 个答案:

答案 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}))