【问题标题】:How do I generate dice rolls with different probabilities?如何生成具有不同概率的掷骰子?
【发布时间】:2019-10-31 09:24:44
【问题描述】:

只是处理一个家庭作业问题,它要求生成一个掷骰子程序,其中一个或两个数字可能比其他数字更有可能打印出来。例如,2 和/或 3 可能比骰子上的其他元素打印的可能性高 10% 或 20%。我得到了代码,可以让它在骰子上打印一个随机数,但不知道如何获得加权输出。

输入:

  def roll_dice(n, faces = 6):
    rolls = []
    rand = random.randrange

    for x in range (n):

      rolls.append(rand(1, faces + 1 ))

    return rolls

  print (roll_dice(5))

输出: [5, 11, 6, 7, 6, 5]

【问题讨论】:

标签: python function for-loop


【解决方案1】:
from scipy import stats
values = np.arange(1, 7) 
prob = (0.1, 0.2, 0.3, 0.1, 0.1, 0.2) # probabilities must sum to 1
custm = stats.rv_discrete(values=(values, prob))

for i in range(10):
    print(custm.rvs())

1、2、3、6、3、2、3、2、2、1

来源:scipy.stats.rv_discrete

【讨论】:

    【解决方案2】:

    如果您使用的是 Python 3

    import random
    rolls = random.choices([1,2,3,4,5,6],weights=[10,10,10,10,10,50], k=10)
    
    rolls
    out:[1, 3, 2, 5, 3, 4, 6, 6, 6, 4]
    

    【讨论】:

    • 最后的k代表什么?
    • @FarhanIqbal,您要生成的项目数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    相关资源
    最近更新 更多