Randrange和随机

时间:2015-04-26 23:38:03

标签: python

在这个牌组改组函数中,nCards表示牌组中的牌数(52),for循环通过使用ranrange方法从1到52获得随机“j”值。

然而,我不明白“i”怎么可能,虽然在“for”循环的执行过程中增加,但最终“i”为52而“j”为52。

为什么呢?因为随机方法在a和b之间获得i,并且当for循环执行时,对我来说,i和len之间的差距(nCards)或ncards的范围减小。

所以在我脑海里。

i = 1,j = 1/52之间的随机

i = 2,j = 2/52之间的随机

i = 3,j = 3/52之间的随机

...

i = 52,j = 52/52之间的随机

我错了吗? 在发布此问题之前,我怎么能测试这个?

def shuffle(self): 
    import random 
    nCards = len(self.cards) 
    for i in range(nCards): 
      j = random.randrange(i, nCards) 
      self.cards[i], self.cards[j] = self.cards[j], self.cards[i] 

1 个答案:

答案 0 :(得分:2)

i in range(52)从0开始并将计算到 52.即最后一个条目为51.请参阅docs以供参考。

randrange()选择从i到51(包括首字母)的整数 - 即最多 52(但不是52)。

您可能include random位于文件的顶部,而不是方法。

如果您print i, j,您会发现这些数字符合预期。例如

0 16
1 24
2 32
...
49 50
50 50
51 51
相关问题