使用具有首选项和唯一性的random.choice()

Ame*_*ite 3 python random list python-3.x

我有一个清单:

decisions = ['yes', 'no', 'unknown']
Run Code Online (Sandbox Code Playgroud)

我使用此列表写入文件:

for x in range(0, 100):
    file.write(random.choice(decisions))
Run Code Online (Sandbox Code Playgroud)

什么是最有效的方法来确保70%的价值观都像"未知"?

我想要一定程度的随机性,但也希望确保写入文件的70个值是某种类型.我计划从用户那里获得这个百分比,这样它就可以改变每次运行.

如果我有另一个更大的列表,并希望确保唯一性(没有重复值,但也随机排序)什么是最好的方法?

Ale*_*ley 6

如果您使用NumPy是一个选项,那么实现起来非常简单:

np.random.choice(['yes', 'no', 'unknown'], p=[0.15, 0.15, 0.7])
Run Code Online (Sandbox Code Playgroud)

第二个数组p求和为1,表示选择第一个数组中相应条目的概率.

以上将确保每次选择"未知"的概率为70%.

文档在这里.


如果你想选择100与正好 70"未知"的条目和30"是"或"否"的选择:

hundred_choices = ['unknown']*70 + [random.choice(['yes', 'no']) for _ in range(30)]
Run Code Online (Sandbox Code Playgroud)

...然后洗牌hundred_choicesrandom.shuffle.