Advertisement
Guest User

Untitled

a guest
Apr 29th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. import random
  2.  
  3. def EnergyFunction(x):
  4. if x >= 0 and x <1:
  5. p = 1
  6. elif x <0 or x>=1:
  7. p = 0
  8. return p
  9.  
  10. def Move_a(delta):
  11. return random.uniform(-delta,delta)
  12.  
  13. def Move_b(delta):
  14. phi = random.uniform(1,1+delta)
  15. if random.uniform(0,1) < 0.5:
  16. phi = 1./phi
  17. print("flip")
  18. else:
  19. print("no flip")
  20. return phi
  21. delta = 0.1
  22. steps = 200000
  23. x = 0.6
  24. x_average = 0
  25. x_temp = x
  26. movetype = 1
  27. if movetype == 1:
  28. for i in range(steps):
  29. x_average += x
  30. x_temp = x + Move_a(delta)
  31. prob = EnergyFunction(x_temp) / EnergyFunction(x)
  32. criteria = min(1, prob)
  33. if random.uniform(0, 1) < criteria:
  34. x = x_temp
  35.  
  36. x_average *= 1. / steps
  37. print(x_average)
  38. else:
  39. for i in range(steps):
  40. x_average += x
  41. x_temp = x + Move_b(delta)
  42. prob = EnergyFunction(x_temp) / EnergyFunction(x)
  43. criteria = min(1, prob)
  44. if random.uniform(0, 1) < criteria:
  45. x = x_temp
  46.  
  47. x_average *= 1. / steps
  48. print(x_average)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement