繁体   English   中英

Python:计算掷骰子的概率 function

[英]Python : Calculating probability of a dice throw function

您好,这是我的任务。 ..................................................... ..................................................... ...... 你在楼梯的底部有一个骰子。 每次掷骰子,您要么向下移动一步(如果您的骰子点数为 1 或 2),要么向上移动一步(如果您的骰子点数为 3、4 或 5)。 如果您在骰子上掷出 6,您将再次掷骰子并按照第二次掷出的数字向上移动。 请注意,如果您在楼梯底部,则无法向下移动。 function 有一个参数,该参数对掷骰子的所有结果采用概率分布。 例如 (0,2.0,3.0,2.0,1.0,1.0.1) 表示得到 1 的概率是 0,2。 2 is 0.3 etc: 计算达到高于第 200 步的概率,对于以下情况,100 次抛出。 [0,2.0,2.0,2.0,2.0,1.0.1] 分布。 '''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''' '''''' 我已经能够创建一些用作 function 的代码(我确定它可以被简化,但我是新手)但是我不确定如何计算它被高于第 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])

您可以通过输入 function 将 T 分配给 1000,然后它会循环一定数量的抛出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM