【问题标题】:Python while loop stops after 10 cyclesPython while循环在10个循环后停止
【发布时间】:2022-10-31 00:22:57
【问题描述】:

我有 python lcg 生成器(随机)并运行测试功能,但我的 while 循环在第 10 个循环后停止,即使我有条件 True 永远不会停止帮助 guyzzz

import math
def rng(m=2**32, a=1664525, c=1013904223):
    rng.current = (a*rng.current + c) % m
    return rng.current/m

def runs(fragma):
    run=0
    
    while True:
        x=rng()
        if x<=fragma:
            run+=1            
        else:
            return run
    return run    

# setting the seed
rng.current = 0
u=[]
for i in range(0,100,1):
    u.append(rng())
mean=sum(u)/len(u)
variance=sum(pow(x-mean,2) for x in u) / len(u)
standartdeviation=math.sqrt(variance)

print("meso oro:",mean)
print("tipiki apoklisi : ",standartdeviation)

rng.current = 0
i=0.0
y=0
while True: -----------------------------this loop
    #rng.current = rng()
    i+=0.1
    y+=1
    print(y)
    x=runs(i)
    print("for fragma=",i,"--runs==",x)

【问题讨论】:

  • while True 循环只有在内部没有可访问的 returnbreak 语句时才是无限的,并且您x &gt; fragma` 时有一个return 语句。
  • 不是while循环内部运行函数,而是我要求的函数外部的循环

标签: python


【解决方案1】:

x&lt;=fragma 时,您不会在runs(fragma) 函数中返回任何内容:

while True:
    x=rng()
    if x<=fragma:
        run+=1
        return run  # <---
    else:
        return run

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    相关资源
    最近更新 更多