Python中random.randint变量置于for循环内外的差异及原理疑问
为什么循环内外定义随机变量结果不同?
核心原因很简单:random.randint(0,1)是调用一次就生成一个固定随机数,变量c存的是这个生成后的具体值,不是“随时生成随机数的指令”。
当你把
c=random.randint(0,1)放在循环外时:
程序只在一开始执行一次随机数生成,把得到的0或1存在c里。之后循环的10次,只是反复打印这个已经固定下来的c值,自然输出10个相同的数字。
对应代码:import random c = random.randint(0,1) # 仅生成一次随机数,c值固定 for _ in range(10): print(c)当你把
c=random.randint(0,1)移到循环内时:
每一次循环都会重新执行这条语句,也就是每一轮都调用一次随机数生成函数,得到一个新的随机值存在c里,所以10次输出的是10个独立的随机数(可能有重复,但整体是随机分布的)。
对应代码:import random for _ in range(10): c = random.randint(0,1) # 每次循环都生成新的随机数 print(c)
说白了,变量存的是函数执行后的结果,不是函数本身。如果想每次获取新的随机数,就得每次都主动调用random.randint(),而不是只调用一次把结果存起来反复用。
内容的提问来源于stack exchange,提问作者sytprk
相关产品推荐
相关产品推荐

