Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР2 / генерация однородного Пуасссоновского процесса

.py
Скачиваний:
44
Добавлен:
03.07.2021
Размер:
1.83 Кб
Скачать
import random
import math

table_values = [0.05, 3.841, 5.991, 7.815, 9.488, 11.070, 12.592, 14.067, 15.507, 16.919, 18.307, 19.675, 21.026, 22.362, 23.685, 24.996]

# 1. ввод входных значений
T = float(input('Введите время окончания процессов: '))
lambd = float(input('Введите лямбду-параметр: '))
N = int(input('Введите количество интервалов времени: '))

# 2. инициализация промежуточных данных
S = [] # список времен событий
t = 0 # начальное время
I = 0 # число событий

while (t <= T):
U = random.random()
t -= math.log(U) / lambd
I += 1
S.append(t)
S.pop()
I -= 1

# 3. подсчет количества точек в интервалах
step = T / N # шаг разбиения
F = [0 for _ in range(N)] # список счетчиков фактических частот

for t in S:
index = int(t / step)
F[index] += 1

# 4. вычисление теоретических частот
P = [math.exp(-lambd) * (lambd ** i) / math.factorial(i) for i in range(N)] # список вероятностей по Пуассону
Th = [I * P[i] for i in range(N)] # список теоретических частот

# 5. проверка по критерию Пирсона
Chi_Square = sum([(F[i] - Th[i]) ** 2 / Th[i] for i in range(N)]) # хи-квадрат (наблюдаемое значение)
critical_value = table_values[N - 2] # табличное критическое значение

# 6. вывод (выходные значения)
print(I)
print(S)
print(Chi_Square)
print(critical_value)
print(Chi_Square < critical_value)