【问题标题】:Printing the probability when a die rolls all 6 sides打印骰子滚动所有 6 个面时的概率
【发布时间】:2019-10-01 10:27:43
【问题描述】:

我正在尝试打印公平骰子滚动的预期数量,并继续滚动直到所有 6 个面都滚动。

我想要做的是,例如,当滚动 1 时,它会被添加到列表中。然后继续滚动直到所有 6 个面都滚动并使用count+=1 继续滚动下一个骰子并使用计数作为次数。然后一旦列表等于[1,2,3,4,5,6] 使 stop 等于 True 并中断。

但是我应该使用 shift 方法,所以如果找到 3 则将其从列表中删除?

最后完成后,我想使用count 计算预期的滚动数量

import random
def rolldice():
    count = 0
    while True:
        die = []
        win = []
        for i in range(1):
            die.append(random.choice([1,2,3,4,5,6]))
        stop = False
        for roll in die:
            number = die.count(roll)
            if(number == 1):
                win += [1]
            if(number == 2):
                win += [2]
            if(number == 3):
                win += [3]
            if(number == 4):
                win += [4]
            if(number == 5):
                win += [5]
            if(number == 6):
                win += [6]
            if(win == [1,2,3,4,5,6]):
                stop = True
                break
        if stop:
            break
        else:
            count += 1
    print(f'Count is {count}')
def main():
    rolldice()
main()

尝试看看我是否走在正确的轨道上,或者我是否应该使用移位和删除。

【问题讨论】:

  • 您正在尝试找出 what 的概率?
  • 我的猜测是您想跟踪频率,然后从该分布中计算概率。对吗?
  • 或者是滚动所有六个面之前所需的预期滚动次数?
  • 如果您继续滚动,您最终将滚动所有六个数字,因此 概率 为 1。您实际上想在这里做什么?
  • 我想计算掷一个公平骰子直到所有 6 个面都掷完的概率,因此我说等于[1,2,3,4,5,6]

标签: python probability dice


【解决方案1】:

如果您只想计算获得所有六个面需要多少次滚动,使用一组要容易得多:

import random

# initialize to empty set
results = set()

# remember how many rolls we have made
rolls = 0

# keep going until we roll all six sides
while len(results) != 6:
    rolls += 1
    results.add(random.choice([1,2,3,4,5,6]))

print('It took %d rolls to get all six sides' % rolls)

【讨论】:

  • 啊,我知道你在那里做了什么,它更简单。我只是想将它添加到一个列表中,然后一旦所有 6 个面都在该列表中,然后打破并计算获得所有 6 个面的次数。
猜你喜欢
  • 2013-12-29
  • 2013-12-29
  • 2021-05-16
  • 1970-01-01
  • 2020-09-02
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
相关资源
最近更新 更多