骰子游戏(用3个骰子模拟许多投掷)

时间:2018-05-09 06:47:45

标签: python python-3.x dice

我正在尝试编写一个骰子游戏:

如何编写一个应该模拟1000个3个骰子投掷的函数,并打印投掷导致正好2个骰子的次数,但不是全部3个,登陆相同的数字。意思不是(1,2,3)或(5,5,5),而是像这样(1,2,2)。

def throw():

我知道我需要使用随机库来生成1到6之间的数字。

我需要的是关于如何处理这个问题以及如何处理的示例代码。

2 个答案:

答案 0 :(得分:0)

该功能可能是这样的:

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编程的新手。这就是为什么我试着编写一个不言自明的代码。

Meta:请记住Stack Overflow不是要求特定编码的正确位置。它旨在成为提供代码的地方,其中包含您无法修复的错误。

答案 1 :(得分:0)

使用for循环和列表推导来生成throw:

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,您可以根据需要进行操作。