基于百分比随机。

假设有一个包含数字的数组/表中的一组未知值,如何使具有较高数字的值具有更大的被选中机会?

我使用 Lua 完成了这个问题,但想到的方法效率极低,并且有些原因甚至无法运行:

例如:

module.InsertTokens(5,'a')
--上面的函数将值“a”插入到数组中五次
module.RemoveId('a') --这应该移除所有“a”的值
print(#module.Tokens)```

2 --应该是 0 --为什么输出的是 2??? :(

function module.InsertTokens(amount, id)
    for i = 1, amount do --重复 amount 次
        print'inserting'
        module.Tokens[#module.Tokens+1]=id
    end
end

function module.RemoveId(id)
    for index, v in pairs(module.Tokens) do
        if v == id then
            print'removing'
            table.remove(module.Tokens, index)
        end
    end
end

是否有一种算法或更好的逻辑可以使用? (如果可以的话,请指出我上面的代码中哪些是错误的?)

点赞
用户3979429
用户3979429

在表格中插入值的次数与其百分比相同。例如,如果你想让 "a" 有 95% 的概率,而 "b" 有 5% 的概率,就在表格中插入 "a" 95 次,"b" 5 次。

2015-07-03 18:40:00