def msk(x):
return int(x^2/100.0)%10000
def lkm(x,a,c,m):
return (a*x+c)%m
def mpk(mu,sigma):
s=1
while s>=1:
u1=random()
u2=random()
v1=2*u1-1
v2=2*u2-1
s=v1^2+v2^2
x1=v1*sqrt(-2*log(s)/s)
x2=v2*sqrt(-2*log(s)/s)
y1=mu+sigma*x1
y2=mu+sigma*x2
return y1
def ml(mu):
u=random()
return -mu*log(u)
@interact
def _(x=input_box(default=8192, label="початкове значення x="),\
a=input_box(default=19, label="a="),\
c=input_box(default=11, label="c="),\
m=input_box(default=31457, label="m="),\
mu=input_box(default=2, label="mu="),\
sigma=input_box(default=1, label="sigma="),\
n=slider(vmin=1, vmax=100000,step_size=100,default=10000,label="кількість випробувань"), \
kol=slider(vmin=1, vmax=100,step_size=1,default=20,label="кількість проміжків"),\
b = selector(["середини квадрату","лінійний конгруентний","убудований", \
"полярних координат","логарифму"], \
label="Метод", buttons=True)
):
arr0=[]
html("Метод: "+b)
for i in range(0,n):
if b=="середини квадрату":
y=x/10000.0
x=msk(x)
elif b=="лінійний конгруентний":
y=x/m
x=lkm(x,a,c,m)
elif b=="убудований":
y=random()
elif b=="полярних координат":
y=mpk(mu,sigma)
elif b=="логарифму":
y=ml(mu)
arr0.append(y)
series=finance.TimeSeries(arr0)
series.plot_histogram(kol).show()
print "Стандартне відхилення =",series.standard_deviation()
print "Автокореляція =",series.autocorrelation()
for i in range(1,5):
print "Центральний момент #",i," =",series.central_moment(i)
print "Показник Херста =",series.hurst_exponent()
print "Максимальне значення =",series.max()
print "Мінімальне значення =",series.min()
print "Математичне сподівання =",series.mean()
for i in range(1,5):
print "Момент #",i," =",series.moment(i)
print "R/S =",series.range_statistic()
print "Варіація =",series.variance()
html("Графік псевдовипадкових чисел")
series.plot().show()