【问题标题】:Making a choice based on probability - Python基于概率做出选择 - Python
【发布时间】:2021-10-10 11:23:01
【问题描述】:
my_list = [1,2,3,4,5,6,7,8,9,10] 

假设我们在 Python 中有一个这样的列表。我想一个一个地连续打印这个列表中的元素。但我希望元素 5 和小于 5 有 80% 的机会出现在屏幕上,其余元素有 20% 的机会出现在屏幕上。我该怎么做?

【问题讨论】:

  • 我没看懂问题?
  • 添加你希望得到的输出
  • 如果你 import random,你可以这样做:print(random.choices(my_list, weights=(80,80,80,80,80,20,20,20,20,20), k=10)) k 代表总打印输出。
  • @Sujay 我将打印元素,但 1、2、3、4 和 5 将有 %80 的机会被打印。输出将只有数字

标签: python list random methods probability


【解决方案1】:

几乎可以肯定有一个更好的解决方案,但这很有效。它首先通过说随机数是 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)])
    

【讨论】:

    【解决方案2】:

    我的建议:

    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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 2011-10-20
      相关资源
      最近更新 更多