Игра в кости (симуляция множества бросков с 3 кубиками) - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь написать игру в кости:

Как написать функцию, которая должна имитировать 1000 бросков по 3 кубикам, и вывести количество раз, когда бросок привел к тому, что ровно 2 кубика, но не все 3, приземлились на одно и то же число. Значение не (1,2,3) или (5,5,5), а вот так (1,2,2).

def throw():

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

Мне нужен пример кода о том, как я могу подойти к этому и что делать.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Используйте цикл for и понимание списка для генерации броска:

for i in range(1000):
    throw = [random.randint(1, 6) for x in range(3)]

Тогда просто напишите код, чтобы проверить ваше состояние, что-то вроде:

valid = any([throw.count(i) == 2 for i in range(1, 6)])

Тогда, если оно действительно True, вы можете делать с ним все, что вам нужно.

0 голосов
/ 09 мая 2018

Функция может выглядеть примерно так:

import random
matches = 0
for i in range(1000):  # 1000 throws
    result = (random.randint(1,6), random.randint(1,6), random.randint(1,6)) # three dices randomly from 1 to 6 in a tuple (list)
    for i in range(1,7): # count from 1 to 6
        if result.count(i) == 2:
            matches += 1
            break # breaking out of this for-loop for performance improvement
print("Got "+str(matches)+" matches.")

Конечно, этот код может быть значительно улучшен. Но в соответствии с вашим вопросом, я предполагаю, что вы новичок в программировании на Python. Вот почему я попытался написать код, который не требует пояснений.

Мета: пожалуйста, имейте в виду, что переполнение стека не является подходящим местом для запроса конкретного кода. Это место, где вы предоставляете код, содержащий ошибку, которую вы не можете исправить.

...