import random
# Tamanhos das amostras para simulação
m = [10, 50, 100, 250, 500, 1000, 1500, 5000, 10000, 15000, 50000, 100000]
simula_pi = dict()
for n in m:
ind = [] # True se o ponto está na círculo, False caso contrário
for _ in range(n):
x = random.uniform(-1, 1) # Eixo x da coordenada
y = random.uniform(-1, 1) # Eixo y da coordenada
ind.append((x**2 + y**2) <= 1) # True ou False
simula_pi[n] = ind
print("Tamanho\t\tE[I]\t\tPi")
print("-------\t\t-------\t\t-------")
for key in m:
e_ind = sum(simula_pi[key])/len(simula_pi[key]) # E[I]
pi = 4 * e_ind # Valor aproximado de Pi para a amostra
print(str(key).ljust(12) + str(round(e_ind, 5)).ljust(12) + str(round(pi, 5)))
aW1wb3J0IHJhbmRvbQoKIyBUYW1hbmhvcyBkYXMgYW1vc3RyYXMgcGFyYSBzaW11bGHDp8OjbwptID0gWzEwLCA1MCwgMTAwLCAyNTAsIDUwMCwgMTAwMCwgMTUwMCwgNTAwMCwgMTAwMDAsIDE1MDAwLCA1MDAwMCwgMTAwMDAwXQoKc2ltdWxhX3BpID0gZGljdCgpCmZvciBuIGluIG06CiAgIGluZCA9IFtdICAjIFRydWUgc2UgbyBwb250byBlc3TDoSBuYSBjw61yY3VsbywgRmFsc2UgY2FzbyBjb250csOhcmlvCiAgIGZvciBfIGluIHJhbmdlKG4pOgogICAgICB4ID0gcmFuZG9tLnVuaWZvcm0oLTEsIDEpICAjIEVpeG8geCBkYSBjb29yZGVuYWRhCiAgICAgIHkgPSByYW5kb20udW5pZm9ybSgtMSwgMSkgICMgRWl4byB5IGRhIGNvb3JkZW5hZGEgICAgICAKICAgICAgaW5kLmFwcGVuZCgoeCoqMiArIHkqKjIpIDw9IDEpICAjIFRydWUgb3UgRmFsc2UKICAgCiAgIHNpbXVsYV9waVtuXSA9IGluZAoKcHJpbnQoIlRhbWFuaG9cdFx0RVtJXVx0XHRQaSIpCnByaW50KCItLS0tLS0tXHRcdC0tLS0tLS1cdFx0LS0tLS0tLSIpCmZvciBrZXkgaW4gbToKICAgZV9pbmQgPSBzdW0oc2ltdWxhX3BpW2tleV0pL2xlbihzaW11bGFfcGlba2V5XSkgICMgRVtJXQogICBwaSA9IDQgKiBlX2luZCAgIyBWYWxvciBhcHJveGltYWRvIGRlIFBpIHBhcmEgYSBhbW9zdHJhCiAgIHByaW50KHN0cihrZXkpLmxqdXN0KDEyKSArIHN0cihyb3VuZChlX2luZCwgNSkpLmxqdXN0KDEyKSArIHN0cihyb3VuZChwaSwgNSkpKQ==