gpt4 book ai didi

python - 如何在 python 中模拟 biased die?

转载 作者:太空狗 更新时间:2023-10-29 20:32:20 24 4
gpt4 key购买 nike

我想模拟 N 面偏置模具?

def roll(N,bias):
'''this function rolls N dimensional die with biasing provided'''
# do something
return result

>> N=6
>> bias=( 0.20,0.20,0.15,0.15,0.14,0.16,)
>> roll(N,bias)
2

最佳答案

这里有一点数学知识。

一个普通的骰子会给每个数字 1-6 以相等的概率,即 1/6。这称为 uniform distribution (它的离散版本,而不是连续版本)。这意味着如果 X 是一个描述单个角色结果的随机变量,那么 X~U[1,6] - 意味着 X 是分布式的与掷骰子的所有可能结果相同,从 1 到 6。

这相当于在[0,1)中选择一个数字,将其分成6个部分:[0,1/6)[1/6,2/6), [2/6,3/6), [3/6,4/6), [ 4/6,5/6), [5/6,1).

您正在请求不同的分布,这是有偏见的。实现这一点的最简单方法是根据您想要的偏差将 [0,1) 部分分成 6 个部分。因此,在您的情况下,您希望将其分为以下几类:[0,0.2), [0.2,0.4), [0.4,0.55), 0.55,0.7) , [0.7,0.84), [0.84,1).

如果你看一下 wikipedia entry ,您会看到,在这种情况下,累积概率函数不会由 6 个等长部分组成,而是由 6 个长度不同的部分组成,具体取决于您给它们的偏差。质量分布也是如此。

回到问题,根据您使用的语言,将其翻译回您的掷骰子。在 Python 中,这是一个非常粗略但有效的示例:

import random
sampleMassDist = (0.2, 0.1, 0.15, 0.15, 0.25, 0.15)
# assume sum of bias is 1
def roll(massDist):
randRoll = random.random() # in [0,1]
sum = 0
result = 1
for mass in massDist:
sum += mass
if randRoll < sum:
return result
result+=1

print(roll(sampleMassDist))

关于python - 如何在 python 中模拟 biased die?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/479236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com