function getRandomKey(tab) local totalPro = 0 for _, item in ipairs(tab) do totalPro = totalPro + item.pro end local randomNum = math.random() * totalPro local currentPro = 0 for _, item in ipairs(tab) do currentPro = currentPro + item.pro if randomNum <= currentPro then return item.key end end end

-- 测试 tab = {{key='aa',pro=0.01},{key='bb',pro=0.02},{key='cc',pro=0.008},{key='dd',pro=0.005},{key='ee',pro=0.002},{key='ff',pro=0.001}} print(getRandomKey(tab))

Lua 实现随机值选择,基于概率分布

原文地址: https://www.cveoy.top/t/topic/mMsK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录