Sample transformation exp.py
From Werner KRAUTH
(Difference between revisions)
| Revision as of 13:20, 6 June 2024 Werner (Talk | contribs) ← Previous diff |
Current revision Werner (Talk | contribs) |
||
| Line 1: | Line 1: | ||
| + | ==Context== | ||
| + | This page is part of my [[BegRohu_Lectures_2024|2024 Beg Rohu Lectures]] on "The second Markov chain revolution" at the [https://www.ipht.fr/Meetings/BegRohu2024/index.html Summer School] "Concepts and Methods of Statistical Physics" (3 - 15 June 2024). | ||
| + | |||
| + | ==Python program== | ||
| + | |||
| import random, math | import random, math | ||
| import matplotlib.pyplot as plt | import matplotlib.pyplot as plt | ||
Current revision
[edit]
Context
This page is part of my 2024 Beg Rohu Lectures on "The second Markov chain revolution" at the Summer School "Concepts and Methods of Statistical Physics" (3 - 15 June 2024).
[edit]
Python program
import random, math
import matplotlib.pyplot as plt
N_trials = 100000
data = []
lam = 2.7
for iter in range(N_trials):
Upsilon = random.uniform(0.0, 1.0)
#
# This is the sample transformation SMAC eqs (1.30), (1.31)
#
x = -math.log(Upsilon) / lam
data.append(x)
plt.title('exponential random numbers (sample transformation) $\lambda = $ '+ str(lam))
plt.xlabel('$x$')
plt.ylabel('$\pi(x)$')
plt.hist(data, bins=100, density=True,label='data')
XValues = []
YValues = []
for i in range(1000):
x = i / 200.0
XValues.append(x)
YValues.append(lam * math.exp(-lam * x))
plt.plot(XValues, YValues, label='theory')
plt.legend(loc='upper right')
plt.show()
