Недавно я посмотрел видео, в котором объяснялось, как вычислить число «пи», и попытался создать симуляцию на Python. Теоретически это работает, но слишком медленно, и я понятия не имею, почему.
В выводе вы можете видеть, что программа начинается с сотен коллизий, рассчитываемых в секунду. , но быстро замедляется до 40-50 в секунду, а когда я оставляю его в покое на продолжительное время, оно уменьшается до жалких двух вычислений!
Вот мой код:
#imports
from time import time, sleep
from fractions import Fraction
#set variables
p = [Fraction(8, 1), Fraction(10, 1)]
m = [1, 1]
v = [Fraction(0, 1), Fraction(-1, 1)]
collisions = 0
time_interval = 1
#main
print("The π Calculator\n\nCredits:\nOriginal formula discovered by Gregory Galperin\nSimulation by Te Du\n")
sleep(1)
m[1] = 100 ** int(input("How many digits would you like to calculate? "))
start_time = time()
prev_time = start_time
while not (v[0] = 0):
if time() - prev_time >= time_interval:
try:
print("Seconds elapsed: " + str(time() - start_time) + "\nCollisions: " + str(collisions))
except ValueError:
prev_time = time() + 1000000000
time_interval = 2 - (time() - prev_time)
prev_time = time()
try:
wall_to_one = p[0] / -v[0]
except ZeroDivisionError:
wall_to_one = 0
one_to_two = (p[1] - p[0]) / (v[0] - v[1])
collisions += 1
if one_to_two
Подробнее здесь: https://stackoverflow.com/questions/790 ... -over-time