Python:计算掷骰子函数的概率



大家好,这是我接到的一个问题。..........................................................................................................你拿着骰子在楼梯的底部。每次掷骰子,你或者向下移动一步(如果你在骰子上得到1或2)或者向上移动一步(如果你得到a骰子上的3、4或5)。如果你在骰子上扔出6,你再扔一次骰子,向上移动根据你第二次投掷的次数来计算。注意如果你在底部楼梯,你不能往下走!这个函数有一个参数,它取总体的概率分布掷骰子的结果。例如(0.2,0.3,0.2,0.1,0.1,0.1)表示得到1的概率是0.2 2是0.3等等。计算到达某一步骤的概率在以下情况下,高于第200次投掷:100次投掷,[0.2,0.2,0.2,0.2,0.1,0.1]分布。''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''我已经能够创建一些作为函数的代码(我确信它可以简化,但我是新的),但我不确定如何计算出它高于第200步的概率。

import random
def rolldice(T:int, D): #T = throws, D = distribution in format [0.0,0.0,0.0,0.0,0.0,1] [0.2,0.2,0.2,0.2,0.1,0.1]
Stair = 0
for i in range(T):
print(i,Stair)
roll = random.choices([1,2,3,4,5,6], weights= D)
roll2 = random.choices([1,2,3,4,5,6])
roll1 = roll[0]
if roll[0] == 1 and Stair > 0:
Stair -= 1
elif roll[0] == 2 and Stair > 0:
Stair -= 1
elif roll[0] == 3:
Stair += 1
elif roll[0] == 4:
Stair += 1
elif roll[0] == 5:
Stair += 1
elif roll[0] == 6:
Stair += roll2[0]
return Stair

rolldice(100, [0.2,0.2,0.2,0.2,0.1,0.1])

您可以通过输入函数将T赋值为1000,然后它将循环执行一定数量的抛出。

最新更新