【发布时间】:2017-03-27 20:37:39
【问题描述】:
我有 3 个骰子,每个骰子有 13 个面。您必须“滚动”它们,直到使所有三个值都相同(如下所示)。
ct = 1
import random
min = 1
max = 13
roll_again = "yes"
while roll_again == "yes" or roll_again == "y" or roll_again == "":
print "This is attempt number: ", + ct
print "Now, rolling the dice..."
print "The values are...."
die1 = random.randint(min, max)
die2 = random.randint(min, max)
die3 = random.randint(min, max)
print die1
print die2
print die3
ct += 1
if die1 == die2:
if die2 == die3:
print "Congrats! You win! hooray! You got it on attempt number ", + ct
ct = 1
roll_again = raw_input("Roll the dice again? ")
这一切都很好,
但我希望 1 面能够比其他面高出 5 倍(如加权骰子),而 13 面能够比其他面高出 0.5 倍(当然不包括 1 值)。这在 Python 2.7 中可行吗?
【问题讨论】:
-
你可以做的是将
random.randint()设置为更大的范围,然后根据生成的数字所在的数字范围返回所需的结果,所以说如果你想要@987654324要更频繁地出现@,您可以将randint的边界设置为(1, 11),并将大于6的所有内容都计算为1。 (不确定这是否让您难以理解) -
您可以创建一个包含 10 个
1s、1 个13和 2 个其他所有内容的群体,然后使用random.sample或random.choice -
非常感谢!我认为这两种方法都行得通!
标签: python python-2.7