可能重复:
Weighted random selection with and without replacement
我厌倦了自己决定下一步做什么。我想让电脑去做。 我只写东西并优先考虑每个,计算机用随机元素选择一个优先级。
所以,我制作了这个文件(tsv):
3 work A
2 work B
1 work C
1 laundry
1 nothing
“工作A”应该以38%的概率发生。 “没什么” - 13%等。
计算机应该算上这一切并对我说:do ___
我可以阅读并获得每件事的百分比。但我无法弄清楚如何选择具有这些百分比的东西。
import csv
# reading
file = open('do.txt', mode='r', encoding='utf-8')
tsv_file = csv.reader(file, delimiter='\t')
# total priority
priority_total = 0
for work in tsv_file:
priority_total = priority_total + int(work[0])
?????
print(do_this)
这样做的方法是什么?是否存在具有给定概率的随机选择函数?
我真的需要这个来停止拖延并开始做事。
答案 0 :(得分:3)
嗯,一个简单的方法是创建一个任务列表,但是将每个任务多次添加到列表中等于其优先级。
因此,在加载文件后,列表将如下所示:
['work A', 'work A', 'work A', 'work B', 'work B', 'work C', 'laundry', 'nothing']
然后您可以使用random.choice来选择随机元素。
task_list = []
for prio, work in tsv_file:
task_list += [work] * int(prio)
do_this = random.choice(task_list)