python中作为if-then循环条件的两个随机不等式

python中作为if-then循环条件的两个随机不等式,python,Python,我陷入了一个难题。我试图弄明白为什么递增计数器不是递增的。它只返回一个值。这是一个随机时间,递增的计数器t_年将下降到零,然后重新开始,而另一个计数器将继续运行 import time, math, random t0 = time.time() average_life_span = .10 while True: time.sleep(.01) a = time.time() age = int (a*1000) - int(t0*1000) #millis

我陷入了一个难题。我试图弄明白为什么递增计数器不是递增的。它只返回一个值。这是一个随机时间,递增的计数器t_年将下降到零,然后重新开始,而另一个计数器将继续运行

import time, math, random

t0 = time.time()
average_life_span = .10

while True:
    time.sleep(.01)
    a = time.time()
    age = int (a*1000) - int(t0*1000) #millis

    t_years = 0
    while (int (age) < int (random.normalvariate (average_life_span, 1))):
            t_years = 0
    else:
            t_years = t_years + .01

    print age, t_years
导入时间、数学、随机
t0=时间。时间()
平均寿命=0.10
尽管如此:
时间。睡眠(.01)
a=时间。时间()
年龄=整数(a*1000)-整数(t0*1000)#毫
t_年=0
而(int(年龄)
在内部循环之前设置
t_years=0
,然后每次都通过循环

最终完成内部循环时,在
else
子句中添加
.01
。所以现在它保证为
0.01

下一次通过外循环时,再次将其重置为
0
,然后反复执行此操作,最后将
.01
添加到末尾。因此,它再次保证为
0.01

如果希望数字从
0
开始,并通过外循环每次递增
0.01
,请不要一直将其重置为
0
。这样做:

t_years = 0

while True:
    time.sleep(.01)
    a = time.time()
    age = int (a*1000) - int(t0*1000) #millis

    while (int (age) < int (random.normalvariate (average_life_span, 1))):
        pass
    else:
        t_years = t_years + .01

    print age, t_years
t_年=0
尽管如此:
时间。睡眠(.01)
a=时间。时间()
年龄=整数(a*1000)-整数(t0*1000)#毫
而(int(年龄)


我不确定这个循环到底应该做什么。我认为它永远不会被触发,但即使它被触发了,它所能做的就是在执行此操作时延迟一段随机的时间,尽可能多地消耗CPU。你为什么要这么做?

@roippi,说得好。在内部while循环中可能会有逻辑改变age的值。否则,如果while循环开始,它将永远不会结束……不,它不是一个无限循环。右侧是生成随机数的表达式。每次都不一样。所以它只有在小于整个范围时才会无限循环;如果它在范围内的任何地方,它将循环有限(但不确定)的次数,这是完全合理的做法。while(int(age)0,并将其递增
0.1
。也许你在这里发布的不是你的真实代码?有两件事正在发生。此代码旨在运行程序的持续时间。[年龄=时间]当这种情况发生时,在更大的时间循环中还有另一个时间间隔[t_年=成长和死亡]。这种情况下的过程总是相加的,这就是为什么没有递减。它长大了。它死了。