如何模拟掷骰子

时间:2019-02-02 17:28:41

标签: python

如何模拟UNFAIR 6面模具的滚动。而不是每一侧都有机会出现平均数(1/6 = 16.7%),应该偏向中间数。滚动2、3、4或5的机会应该为20%,滚动1或6的机会应该只有10%。 谢谢

4 个答案:

答案 0 :(得分:5)

另一种可能性:

import random
result = random.choices([1, 2, 3, 4, 5, 6], weights=[10, 20, 20, 20, 20, 10])[0]

请参见documentation

答案 1 :(得分:3)

您可以通过多种方式来实现。这是比较容易的一种:

from random import choice
options = [1, 2, 2, 3, 3, 4, 4, 5, 5, 6]
result = choice(options)
print(result)

有10个值。获得1的概率百分比为(1/10)* 100 = 10%,获得2的概率百分比为(2/10)* 100 = 20%...

答案 2 :(得分:1)

如果安装了numpy,则可以使用numpy.random.choice以给定的概率分布进行采样。

import numpy as np
values = [1, 2, 3, 4, 5, 6]
probs = [0.1, 0.2, 0.2, 0.2, 0.2, 0.1]
sample = np.random.choice(values, p=probs)

答案 3 :(得分:1)

import numpy as np

die_roll = np.random.choice(np.arange(1, 7, 1), p = [0.1, 0.2, 0.2, 0.2, 0.2, 0.1])