Добавил:
Периодически делаю учебные работы по предметам ЛЭТИ и выгружаю их сюда для пополнения базы, с которой можно будет свериться. Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
11.01.2026
Размер:
2.11 Кб
Скачать
import matplotlib.pyplot as plt
import numpy as np
import random

a = []
s = []
for i in range(55):
a.append(random.randint(0, 2**32))
for i in range(52):
s.append(random.randint(0, 2**32))
i = {'a': 54, 's': 51}


def next_a():
i['a'] += 1
a[i['a'] % 55] = (a[(i['a'] - 55) % 55] + a[(i['a'] - 24) % 55]) % 2**32
return a[i['a'] % 55]


def next_s():
i['s'] += 1
a[i['s'] % 52] = (a[(i['s'] - 52) % 52] + a[(i['s'] - 19) % 52]) % 2**32
return a[i['s'] % 52]


def next_z():
z0 = next_a()
z1 = next_s()
while z1 & 1 != 1:
z0 = next_a()
z1 = next_s()
return z0 / 2 ** 32, z1 / 2 ** 32


Z = []
for k in range(1000 // 2):
z = next_z()
Z.append(z[0])
Z.append(z[1])

N = len(Z)
M = sum(Z) / N
D = (sum(z * z for z in Z) - (M * M) * N) / N
print(f"Моменты: M = {M}; D = {D}")

base = np.linspace(0, 1, N)
plt.hist([Z, base],
bins=10,
weights=[np.ones_like(Z) / len(Z),
np.ones_like(base) / base.size],
label=['Эмпирическое', 'Теоретическое'])
plt.legend(loc='lower right')
plt.savefig("Yura/ms1.1.svg")
plt.show()


S_list = (2, 5, 10)
for S in S_list:
targetNs = [x*200 for x in range(1, 40)]
Rs = []
for targetN in targetNs:
Z.clear()
for k in range(targetN // 2):
z = next_z()
Z.append(z[0])
Z.append(z[1])
N = len(Z)
randX = Z[:N-S]
randY = Z[S:]
R = np.corrcoef(randX, randY)[0, 1]
Rs.append(R)
if S == S_list[0]:
plt.plot(targetNs, Rs, color='r', label='s = 2')
if S == S_list[1]:
plt.plot(targetNs, Rs, color='g', label='s = 5')
if S == S_list[2]:
plt.plot(targetNs, Rs, color='b', label='s = 10')
plt.title("Коэффициент корреляции при s = 2, 5, 10")
plt.legend()
plt.xlabel("N")
plt.ylabel("R")
plt.grid(True)
plt.axhline(y=0, color='k')
plt.axvline(x=0, color='k')
plt.savefig("Veronika/ms1.s.svg")
plt.show()
Соседние файлы в папке Fish