Čistě multiplikativní lineární kongruentní generátor¶
In [1]:
import numpy as np
import matplotlib.pyplot as plt
$I_{j+1}=aI_j\; (\text{mod } m)$
$a = 16807$, $m = 2^{31}-1$
In [2]:
def ran0(i):
a=16807
m=2147483647
i=(a*i) % m
return i,i/m
In [3]:
i=1243546789 #seminko
N=1000000 #počet simulovaných hodnot
r=np.empty(N)
for j in range(N):
i,r[j]=ran0(i)
In [4]:
plt.hist(r,bins=1000,density=True)
plt.ylim(0.85,1.15)
plt.xlabel("x")
plt.ylabel("y")
plt.show()
In [ ]: