获取随机样本

kev*_*lre 27 python random python-3.x

我有这个清单:

colors = ["R", "G", "B", "Y"]
Run Code Online (Sandbox Code Playgroud)

我希望从中获得4个随机字母,但包括重复.

运行这个只会给我4个独特的字母,但绝不会有任何重复的字母:

print(random.sample(colors,4))
Run Code Online (Sandbox Code Playgroud)

如何获得4种颜色的列表,可能重复的字母?

Ray*_*ger 31

在Python 3.6中,新的random.choices()函数将直接解决问题:

>>> from random import choices
>>> colors = ["R", "G", "B", "Y"]
>>> choices(colors, k=4)
['G', 'R', 'G', 'Y']
Run Code Online (Sandbox Code Playgroud)


tri*_*cot 19

random.choice:

print([random.choice(colors) for _ in colors])
Run Code Online (Sandbox Code Playgroud)

如果您需要的值的数量与列表中的值的数量不对应,则使用range:

print([random.choice(colors) for _ in range(7)])
Run Code Online (Sandbox Code Playgroud)

从Python 3.6开始,您还可以使用random.choices(复数)并指定您需要的值的数量作为k参数.


Pri*_*ank 14

尝试numpy.random.choice(文档numpy-v1.13):

import numpy as np
n = 10 #size of the sample you want
print(np.random.choice(colors,n))
Run Code Online (Sandbox Code Playgroud)