gpt4 book ai didi

python - 生成概率列表

转载 作者:行者123 更新时间:2023-12-03 23:00:42 25 4
gpt4 key购买 nike

我正在尝试创建一个循环,该循环将生成一系列可以比较值列表的概率。我需要以列表形式出现的概率,并且列表的长度可能会有所不同。例如,如果列表是 lst = [1, 2, 3] 并且我想将调用 lst[2] 的概率设置为 80%,而其他两个值的可能性相同,我将使用 p = [0.1, 0.1, 0.8]
我希望能够遍历所有可能的概率(具有可定义的步骤,在本例中为 step = 0.1 )。我的逻辑在这一点上卡住了:

lst = [1, 2, 3]
step = 0.1

for p in probability_gen_function(lst, step):
print(p)

loop_1 -> p = [0.1, 0.1, 0.8]
loop_2 -> p = [0.1, 0.2, 0.7]
---
loop_n -> p = [0.8, 0.1, 0.1]
我可以看到我的 probability_gen_function 生成随机概率列表的方法,但无法系统地循环遍历它们。任何建议,将不胜感激。

最佳答案

您可以使用递归生成器函数:

lst = [1, 2, 3]
step = 0.1
def prob_gen(d, s, c = []):
if len(c) == len(d):
yield [round(i, 2) for i in c]
else:
r = 10-sum(int(k*10) for k in c)
for i in ([r] if len(c)+1 == len(d) else range(1, r)):
yield from prob_gen(d, s, c+[s*i])


print(list(prob_gen(lst, step)))
输出:
[[0.1, 0.1, 0.8], [0.1, 0.2, 0.7], [0.1, 0.3, 0.6], [0.1, 0.4, 0.5], [0.1, 0.5, 0.4], [0.1, 0.6, 0.3], [0.1, 0.7, 0.2], [0.1, 0.8, 0.1], [0.2, 0.1, 0.7], [0.2, 0.2, 0.6], [0.2, 0.3, 0.5], [0.2, 0.4, 0.4], [0.2, 0.5, 0.3], [0.2, 0.6, 0.2], [0.2, 0.7, 0.1], [0.3, 0.1, 0.6], [0.3, 0.2, 0.5], [0.3, 0.3, 0.4], [0.3, 0.4, 0.3], [0.3, 0.5, 0.2], [0.3, 0.6, 0.1], [0.4, 0.1, 0.5], [0.4, 0.2, 0.4], [0.4, 0.3, 0.3], [0.4, 0.4, 0.2], [0.4, 0.5, 0.1], [0.5, 0.1, 0.4], [0.5, 0.2, 0.3], [0.5, 0.3, 0.2], [0.5, 0.4, 0.1], [0.6, 0.1, 0.3], [0.6, 0.2, 0.2], [0.6, 0.3, 0.1], [0.7, 0.1, 0.2], [0.7, 0.2, 0.1], [0.8, 0.1, 0.1]]

关于python - 生成概率列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65970068/

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