具有加权选项输出的random.choices

问题描述 投票:-1回答:2
import random
a = 1
b = 2
c = 3

print(random.choices([a,b,c], [50,3,1]))

输出[1],[2]或[3]的代码可以解释为什么输出有圆括号的方括号?

python python-3.x
2个回答
1
投票

因为random.choices(population, weights=None, *, cum_weights=None, k=1)返回k个元素的列表。在您的情况下,由于您没有为k传递任何值,因此列表只有一个项目。

如果你想获得一个值,而不是一个列表,你可以使用random.choice(seq),但在这种情况下你不能像random.choices()那样传递权重列表。


1
投票

random.choices绘制一个值列表,您可以在调用时使用k=..指定:

fourty = random.choices(range(10),k=40)

您可以使用指定概率的choices方法通过索引将单个值打印出来

print(random.choices([a,b,c], [50,3,1])) [0]  # get the one single value from the result list

或者您可以使用random.choice()提供反映您的可能性的迭代:

import random
a=1
b=2
c=3

# create an iterable that reflects your propabilies and draw 1 element from it
print(random.choice(  [a]*50+[b]*3+[c] ) )  
© www.soinside.com 2019 - 2024. All rights reserved.