簡體   English   中英

如何生成具有不同概率的擲骰子?

[英]How do I generate dice rolls with different probabilities?

只是在做一個家庭作業問題,它要求生成一個擲骰子程序,其中一個或兩個數字可能比 rest 更有可能打印出來。 例如,2 和/或 3 可能比骰子上的其他元素打印的可能性高 10% 或 20%。 我得到了代碼,可以讓它在骰子上打印一個隨機數,但不知道如何加權 output。

輸入:

  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))

output: [5, 11, 6, 7, 6, 5]

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

如果您在 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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM