根据概率做出选择 - Python
Making a choice based on probability - Python
my_list = [1,2,3,4,5,6,7,8,9,10]
假设我们在 Python 中有一个这样的列表。我想一个一个地连续打印这个列表中的元素。但我希望元素 5 和小于 5 的元素有 80% 的机会出现在屏幕上,而其余元素有 20% 的机会出现在屏幕上。我该怎么做?
我的建议:
import random
my_list = [1,2,3,4,5,6,7,8,9,10]
print(random.choices(my_list, weights=(80,80,80,80,80,20,20,20,20,20)))
结果:
[8]
[2]
[2]
[1]
[4]
[5]
如果你输入'k'变量,你可以打印出k等于:
print(random.choices(my_list, weights=(80,80,80,80,80,20,20,20,20,20), k=10))
结果:
[1, 3, 5, 5, 1, 4, 4, 3, 2, 10]
几乎肯定有比这更好的解决方案,但这个可行。它首先通过说随机数是 8 还是 9 然后它在 20% (2/10) 中来计算它是否会在每一轮 (rand) 中处于 20% 或 80%,然后从相应的随机选择列表的一半。
import random
rand = random.randrange(0,9)
my_list = [1,2,3,4,5,6,7,8,9,10]
if rand == 8 or rand == 9:
print(my_list[5:][random.randrange(0,4)])
else:
print(my_list[:5][random.randrange(0,4)])
my_list = [1,2,3,4,5,6,7,8,9,10]
假设我们在 Python 中有一个这样的列表。我想一个一个地连续打印这个列表中的元素。但我希望元素 5 和小于 5 的元素有 80% 的机会出现在屏幕上,而其余元素有 20% 的机会出现在屏幕上。我该怎么做?
我的建议:
import random
my_list = [1,2,3,4,5,6,7,8,9,10]
print(random.choices(my_list, weights=(80,80,80,80,80,20,20,20,20,20)))
结果:
[8]
[2]
[2]
[1]
[4]
[5]
如果你输入'k'变量,你可以打印出k等于:
print(random.choices(my_list, weights=(80,80,80,80,80,20,20,20,20,20), k=10))
结果:
[1, 3, 5, 5, 1, 4, 4, 3, 2, 10]
几乎肯定有比这更好的解决方案,但这个可行。它首先通过说随机数是 8 还是 9 然后它在 20% (2/10) 中来计算它是否会在每一轮 (rand) 中处于 20% 或 80%,然后从相应的随机选择列表的一半。
import random
rand = random.randrange(0,9)
my_list = [1,2,3,4,5,6,7,8,9,10]
if rand == 8 or rand == 9:
print(my_list[5:][random.randrange(0,4)])
else:
print(my_list[:5][random.randrange(0,4)])