Python 带有加权期权输出的随机选择

Python 带有加权期权输出的随机选择,python,python-3.x,Python,Python 3.x,上面的代码输出[1]、[2]或[3],有人能解释为什么输出的周围有方括号吗?因为返回的是k个元素的列表。在您的情况下,由于没有为k传递任何值,因此列表中只有一个项 如果要获取值而不是列表,可以使用,但在这种情况下,不能像使用random.choices()那样传递权重列表。绘制一个值列表,可以在调用它时使用k=…指定: import random a = 1 b = 2 c = 3 print(random.choices([a,b,c], [50,3,1])) 您可以使用指定概率的choi

上面的代码输出[1]、[2]或[3],有人能解释为什么输出的周围有方括号吗?

因为返回的是k个元素的列表。在您的情况下,由于没有为
k
传递任何值,因此列表中只有一个项

如果要获取值而不是列表,可以使用,但在这种情况下,不能像使用
random.choices()那样传递权重列表。

绘制一个值列表,可以在调用它时使用
k=…
指定:

import random
a = 1
b = 2
c = 3

print(random.choices([a,b,c], [50,3,1]))
您可以使用指定概率的
choices
方法,通过索引将得到的单个值打印出来

fourty = random.choices(range(10),k=40)
或者,您可以使用提供一个可反映您的概率的iterable:

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

因为,
choices
返回一个列表@Austin你如何使其不打印列表?关于
random.sample()
?@Swift
random.sample
random.choices
相同,但只是不重复地绘制。他只画了一个元素,所以在
随机选择
随机选择
之间没有区别。样本-其中任何一个都会返回他不想要的
列表
-所以我没有收到你的评论?他没有说它们必须是唯一的,也没有说它们必须是唯一的。所以在这里使用它不是一个可行的函数吗?好的,我明白了。你的观点现在更好了。你是对的,他没有:)你能举个例子吗?不要用
随机选择([a,b,c],[50,3,1])
,用
随机选择([a,b,c])
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] ) )