为什么Python中random.randint包含区间上限,range、循环、索引不包含?
规则差异原因
这两个是Python不同模块下的独立接口,参数规则没有联动,差异完全来自于各自的接口定义:
range(start, stop)采用Python序列通用的左闭右开设计,stop是截断阈值,迭代时仅返回小于stop的整数,因此range(0,5)只会生成0~4的数值,你对range的原有认知没有问题。random.randint(a, b)的定义为返回闭区间[a, b]内的整数,b是允许被取到的上限,它本质是random.randrange(a, b+1)的简化写法,而randrange的参数规则和range完全一致,这也是randint(0,5)能返回5的原因。
如果需要随机数的取值范围和range(0,5)对齐,可以使用以下两种写法:
import random # 写法1:调整randint的上限值 num1 = random.randint(0,4) # 写法2:使用参数规则和range完全一致的randrange num2 = random.randrange(0,5)
内容的提问来源于stack exchange,提问作者Jason Buhain
相关产品推荐
相关产品推荐

