我试图通过研究一些旧资料来弄清这个问题。我 怀疑
这
randint是在Python的长整数之前实现的:这意味着,如果您想要一个包含在内的随机数,
INT_MAX则需要调用
random.randrange(0,INT_MAX + 1)该函数,该函数将溢出并导致
(0, 0)或的自变量
(0, INT_MIN)。
但是,回首Python
1.5.2源代码,
Lib/whrandom.py我们看到:
## Get a random integer in the range [a, b] including both end points.# (Deprecated; use randrange below.)#def randint(self, a, b): return self.randrange(a, b+1)
whrandom.randint继续在被弃用2.0,2.1,2.2,以及2.3
;
但
random.randint在2.1中已标记为已弃用,尽管在2.2中已不再标记为已弃用。
此外,
random.py从2.1版开始,第一个在
random.randintdocstring中需要注意的内容:
def randrange(self, start, stop=None, step=1, int=int, default=None): """Choose a random item from range(start, stop[, step]). This fixes the problem with randint() which includes the endpoint; in Python this is usually not what you want. Do not supply the 'int' and 'default' arguments. """
早于该版本的唯一可用源是0.9.1源,据我所知,
randint当时尚未实现。
因此,我得出结论,此时,只有Guido本人才知道
randint包含 端点的理由。给定Python
2.1中的文档字符串,听起来原因可能是一个简单的错误。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)