作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 lua 语言使用 Corona SDK 编写游戏。我很难为这样的系统提出逻辑;
我有不同的项目。我想要一些元素有 1/1000 的机会被选中(一个独特的元素),我想要一些有 1/10、一些 2/10 等等。
我正在考虑填充一张 table 并随机选择一个项目。例如,我将 100 个“X”项添加到表中,而不是 1 个“Y”项。因此,通过从 [0,101] 中随机选择,我可以达到我想要的效果,但我想知道是否还有其他方法可以做到。
最佳答案
items = {
Cat = { probability = 100/1000 }, -- i.e. 1/10
Dog = { probability = 200/1000 }, -- i.e. 2/10
Ant = { probability = 699/1000 },
Unicorn = { probability = 1/1000 },
}
function getRandomItem()
local p = math.random()
local cumulativeProbability = 0
for name, item in pairs(items) do
cumulativeProbability = cumulativeProbability + item.probability
if p <= cumulativeProbability then
return name, item
end
end
end
local count = { }
local iterations = 1000000
for i=1,iterations do
local name = getRandomItem()
count[name] = (count[name] or 0) + 1
end
for name, count in pairs(count) do
print(name, count/iterations)
end
关于lua - 如何根据项目的稀有性设置从列表中随机选择项目的正确逻辑,即 "rare" "normal",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23437573/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我是一名优秀的程序员,十分优秀!