我想用相互独立的数字掷3个骰子

时间:2010-12-28 00:02:09

标签: python random

我想编写一个python程序,它将模拟同时滚动的3个骰子,但我希望3个骰子在每次滚动时始终具有不同的数字。在第一卷上我得到2,1,6这很好,但我不想要前卫。永远滚动副本2,4,2。 (3,3,3,也是不可接受的)

# generating random numbers 1 - 6
die1 = random.randint(1, 6) 

die2 = random.randrange(1, 6)

die3 = random.randrange(1, 6)

这是我到目前为止所有人,我是初学者......谢谢

5 个答案:

答案 0 :(得分:8)

尝试random.sample

>>> sides = 6
>>> dice = random.sample(range(1, sides + 1), 3)
[3, 6, 1]

我建议你重新考虑是否有一个名为die1die2die3的变量是个好主意。

通常最好使用上面示例中的列表。

答案 1 :(得分:3)

这将有效:

a = range(1,7)
random.shuffle(a)
a[:3]

答案 2 :(得分:2)

一种简单的方法是

import random
die1, die2, die3 = random.sample([1,2,3,4,5,6], 3)

Random Documentation

答案 3 :(得分:2)

这不是三个骰子的通常行为,但你可以这样做:

import random
[die1, die2, die3] = random.sample(xrange(1, 7), 3)

以下是有关random.sample()xrange()的文档供您参考。

答案 4 :(得分:0)

如果您要多次滚动,最好将范围(1,7)存储在某处并使用示例函数而不是随机播放(显然因为“随机播放”会使所有范围进行随机播放)

看看这个:

import random,time
N=80000
a = range(1,7)
t= time.clock()
for i in xrange(N):
    random.shuffle(a)
    a[:3]
t= time.clock()-t
print t

t= time.clock()
for i in xrange(N):
    dice = random.sample(range(1, 6 + 1), 3)
t= time.clock()-t
print t

t= time.clock()
for i in xrange(N):
    dice = random.sample(a, 3)
t= time.clock()-t
print t