Python 打印出的 int 达到 1,000,000 后速度变慢

Python slowing down after int printed out reaches 1,000,000

我真的是 Python 的新手,我只是在试验代码,突然发现一些很烦人的东西。

# (mports
import random
import math
import time
import os
import sys
import csv

# Main

def clear():
    os.system("cls")

Population = 2

timetaken = 0

while True:

    timetaken += 1

    PossibleBirths = Population / 2

    PossibleBirths = int(PossibleBirths)

    for n in range(PossibleBirths):
        luck = random.randint(1, 100)

        if luck >= 75:
            Population += 1
        else:
            Population += 0
    
    print("Years: "+str(timetaken))
    print("Current Population: "+'{0:,.0f}'.format(Population))
    time.sleep(0.25)
    clear()

大约 100 年后,或者达到大约 1,000,000 后,它会非常迅速地减慢打印速度,通常需要 5 秒才能打印出来。

知道为什么吗?

尝试 increase/decrease 睡眠时间后,我仍然没有解决。

这里的问题不在于打印,它来自 for 循环。您的 Population 增长得越多,PossibleBirths 就越高。由于您正在循环 range(PossibleBirths),因此您在 for 循环中的每一步都会进行越来越多的迭代。

这里的解决方案很“简单”:用统计上给出相同结果的等效概率函数替换 for 循环。

如果您只对平均增长率感兴趣,那么只需将人口增加 (1-0.75)*PossibleBirths

如果你真的想要随机的东西,那么使用 binomial law