import random
from math import *
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
def marchemassive (r, m) :
x = 0
y = 0
d2 = 0
s = 0
while d2<r*r:
w = random.random()
if w <= 1/3 :
x = x + 1
elif 1/3< w<= 2/3:
x = x - 0.5
y = y + sqrt(3)/2
else:
x = x - 0.5
y = y - sqrt(3)/2
d2 = x*x+y*y
s=s+1
return (x/r , y/r, (1-m**2)**s)
def marchemassiverepete (r ,m, n) :
npx = []
npy = []
npp = []
max=0
for i in range (n) :
x , y , p = marchemassive (r, m)
pos=-1
for i in range (len(npx)) :
if npx[i]==x and npx[i]==y :
pos =i
if pos == -1 :
npx.append (x)
npy.append (y)
npp.append (p)
if max<p :
max = p
else :
npp[i] = npp[i] + p
if npp[i]>max :
max = npp[i]
return (npx, npy, [elem/max for elem in npp])
r = 100
m = 0.1
n = 100
npx, npy, npp = marchemassiverepete (r, m , n)
sns.relplot(x=npx,y=npy, alpha= npp, height=10,s=10)
plt.show()
aW1wb3J0IHJhbmRvbQpmcm9tIG1hdGggaW1wb3J0ICoKaW1wb3J0IG1hdHBsb3RsaWIucHlwbG90IGFzIHBsdAppbXBvcnQgbnVtcHkgYXMgbnAKaW1wb3J0IHNlYWJvcm4gYXMgc25zCgpkZWYgbWFyY2hlbWFzc2l2ZSAociwgbSkgOgogICAgeCA9IDAKICAgIHkgPSAwCiAgICBkMiA9IDAKICAgIHMgPSAwCiAgICB3aGlsZSBkMjxyKnI6CiAgICAgICAgdyA9IHJhbmRvbS5yYW5kb20oKQogICAgICAgIGlmIHcgPD0gMS8zIDoKICAgICAgICAgICAgeCA9IHggKyAxCiAgICAgICAgZWxpZiAgMS8zPCB3PD0gMi8zOgogICAgICAgICAgICB4ID0geCAtIDAuNQogICAgICAgICAgICB5ID0geSArIHNxcnQoMykvMgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHggPSB4IC0gMC41CiAgICAgICAgICAgIHkgPSB5IC0gc3FydCgzKS8yCiAgICAgICAgZDIgPSB4KngreSp5CiAgICAgICAgcz1zKzEKICAgIHJldHVybiAoeC9yICwgeS9yLCAoMS1tKioyKSoqcykKCgoKZGVmIG1hcmNoZW1hc3NpdmVyZXBldGUgKHIgLG0sIG4pIDoKICAgIG5weCA9IFtdCiAgICBucHkgPSBbXQogICAgbnBwID0gW10KICAgIG1heD0wCiAgICBmb3IgaSBpbiByYW5nZSAobikgOgogICAgICAgIHggLCB5ICwgcCA9IG1hcmNoZW1hc3NpdmUgKHIsIG0pCiAgICAgICAgcG9zPS0xCiAgICAgICAgZm9yIGkgaW4gcmFuZ2UgKGxlbihucHgpKSA6CiAgICAgICAgICBpZiBucHhbaV09PXggYW5kIG5weFtpXT09eSA6CiAgICAgICAgICAgIHBvcyA9aQogICAgICAgIGlmIHBvcyA9PSAtMSA6CiAgICAgICAgICBucHguYXBwZW5kICh4KQogICAgICAgICAgbnB5LmFwcGVuZCAoeSkKICAgICAgICAgIG5wcC5hcHBlbmQgKHApCiAgICAgICAgICBpZiBtYXg8cCA6CiAgICAgICAgICAgIG1heCA9IHAKICAgICAgICBlbHNlIDogCiAgICAgICAgICBucHBbaV0gPSBucHBbaV0gKyBwCiAgICAgICAgICBpZiBucHBbaV0+bWF4IDoKICAgICAgICAgICAgbWF4ID0gbnBwW2ldCiAgICAKICAgIHJldHVybiAobnB4LCBucHksIFtlbGVtL21heCBmb3IgZWxlbSBpbiBucHBdKQoKciA9IDEwMAptID0gMC4xCm4gPSAxMDAKCm5weCwgbnB5LCBucHAgPSBtYXJjaGVtYXNzaXZlcmVwZXRlIChyLCBtICwgbikKCnNucy5yZWxwbG90KHg9bnB4LHk9bnB5LCBhbHBoYT0gbnBwLCBoZWlnaHQ9MTAscz0xMCkKCnBsdC5zaG93KCk=