Распечатка вероятности, когда кубик бросает все 6 сторон - PullRequest
1 голос
/ 01 октября 2019

Я пытаюсь напечатать ожидаемое количество случаев, когда выпадает справедливый кубик, и продолжать кувыркаться, пока не выпадут все 6 сторон.

То, что я пытаюсь сделать, это когда в качестве примера 1катится добавляется в список. Затем продолжайте движение до тех пор, пока все 6 сторон не будут выброшены, и используйте count+=1, чтобы продолжать бросать следующий кубик и использовать количество как количество раз. Затем, если список равен [1,2,3,4,5,6], чтобы сделать стоп равным True и сломать.

Но стоит ли использовать метод сдвига, чтобы, если найдено 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()

Попытка выяснить, нахожусь ли я на правильном пути или мне следует использовать сдвиг и удаление.

1 Ответ

2 голосов
/ 01 октября 2019

Если вы просто хотите посчитать, сколько бросков требуется, чтобы получить все шесть сторон, использовать набор гораздо проще:

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)
...