选取某物的百分比机会

寻找一种通用的方法,使得在 N 个物品中有 1 个被选中的百分比机会。假设有 50% 的几率成为狮子,20% 的几率成为老虎,30% 的几率成为熊。必须选中其中的一个,并且调用方法不知道机会百分比的数量,返回的值就是你将会得到的值。

类似于:

local animal = PickAnimal([?对传递的数据结构打开])

点赞
用户1442917
用户1442917

类似这样的代码可能有效:

-- 定义一个函数,用于随机选择动物名称
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}))
2018-03-30 00:32:17