Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- def EnergyFunction(x):
- if x >= 0 and x <1:
- p = 1
- elif x <0 or x>=1:
- p = 0
- return p
- def Move_a(delta):
- return random.uniform(-delta,delta)
- def Move_b(delta):
- phi = random.uniform(1,1+delta)
- if random.uniform(0,1) < 0.5:
- phi = 1./phi
- print("flip")
- else:
- print("no flip")
- return phi
- delta = 0.1
- steps = 200000
- x = 0.6
- x_average = 0
- x_temp = x
- movetype = 1
- if movetype == 1:
- for i in range(steps):
- x_average += x
- x_temp = x + Move_a(delta)
- prob = EnergyFunction(x_temp) / EnergyFunction(x)
- criteria = min(1, prob)
- if random.uniform(0, 1) < criteria:
- x = x_temp
- x_average *= 1. / steps
- print(x_average)
- else:
- for i in range(steps):
- x_average += x
- x_temp = x + Move_b(delta)
- prob = EnergyFunction(x_temp) / EnergyFunction(x)
- criteria = min(1, prob)
- if random.uniform(0, 1) < criteria:
- x = x_temp
- x_average *= 1. / steps
- print(x_average)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement