gpt4 book ai didi

python - 如何根据概率选择随机索引?

转载 作者:太空宇宙 更新时间:2023-11-03 17:04:15 26 4
gpt4 key购买 nike

我有一个数字列表,我正在尝试编写一个函数来选择 n 个随机索引 i,这样 i 的可能性是百分比[i]

功能:

def choose_randomly(probabilities, n):
percentages = accumulated_s(probabilities)
result = []
for i in range(n):
r = random()
for j in range(n):
if r < percentages[j]:
result = result + [j]
return result

accumulated_s 只会生成相应的概率列表。

我期待这样的结果:

choose_randomly([1, 2, 3, 4], 2) -> [3 3 0]
choose_randomly([1, 2, 3, 4], 2) -> [1 3 1]

问题是这没有返回 n 个索引。谁能指出我做错了什么?非常感谢!

最佳答案

一旦你找到了正确的概率范围,你就完成了; break 跳出内部循环以生成下一个值,否则您将表现得好像所有高于正确阈值的概率也都匹配:

    # Enumerate all percentages, not just first n
for j, pct in enumerate(percentages):
if r < pct:
result.append(j) # Don't create tons of temporary lists; mutate in place
break # <-- Don't add more results

另请注意,如果概率集中有很多值,则使用 bisect module 中的函数可能有意义。找到正确的值,而不是每次都线性扫描;对于百分比中的少量条目,线性扫描没问题,但对于大量条目,O(log n) 查找可能会击败O(n) 扫描。

关于python - 如何根据概率选择随机索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34734451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com