gpt4 book ai didi

python - 范围和随机

转载 作者:行者123 更新时间:2023-12-01 04:44:03 25 4
gpt4 key购买 nike

在这个洗牌函数中,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]

最佳答案

i in range(52) 从 0 开始,一直计数到 52。即最后一个条目是 51。请参阅 docs供引用。

randrange()选择从 i 到 51(含)的整数 - 即最大 52(但不是 52)。

您可能应该在文件顶部包含随机,而不是在方法中。

如果你打印 i, j,你会发现数字符合预期。例如

0 16
1 24
2 32
...
49 50
50 50
51 51

关于python - 范围和随机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29884954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com