Добавил:
andreyishp
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:ЛР1 / закон Пуассона
.py генерирование дискретной случайной переменной(Пуассоновский закон)
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. ввод входных значений
lambd = float(input('Введите лямбду-параметр(0..1): '))
n = int(input('Введите количество данных: '))
m = int(input('Введите количество опытов: '))
# 2. проведение m опытов и подсчет количества полученных значений
F = [0 for _ in range(n)] # список счетчиков
for _ in range(m):
U = random.random() # генерируем случайное число от 0 до 1
i = 0
p = math.exp(-lambd)
R = p
while(U > R):
p *= lambd / (i + 1)
R += p
i += 1
F[i] += 1
# 3. вычисление теоретических частот
P = [math.exp(-lambd) * (lambd ** i) / math.factorial(i) for i in range(n)] # список вероятностей по Пуассону
T = [m * P[i] for i in range(n)] # список теоретических частот
# 4. проверка по критерию Пирсона
Chi_Square = sum([(F[i] - T[i]) ** 2 / T[i] for i in range(n)])
critical_value = table_values[n - 2]
# 5. вывод (выходные значения)
print(F)
print(T)
print(Chi_Square)
print(critical_value)
print(Chi_Square < critical_value)
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. ввод входных значений
lambd = float(input('Введите лямбду-параметр(0..1): '))
n = int(input('Введите количество данных: '))
m = int(input('Введите количество опытов: '))
# 2. проведение m опытов и подсчет количества полученных значений
F = [0 for _ in range(n)] # список счетчиков
for _ in range(m):
U = random.random() # генерируем случайное число от 0 до 1
i = 0
p = math.exp(-lambd)
R = p
while(U > R):
p *= lambd / (i + 1)
R += p
i += 1
F[i] += 1
# 3. вычисление теоретических частот
P = [math.exp(-lambd) * (lambd ** i) / math.factorial(i) for i in range(n)] # список вероятностей по Пуассону
T = [m * P[i] for i in range(n)] # список теоретических частот
# 4. проверка по критерию Пирсона
Chi_Square = sum([(F[i] - T[i]) ** 2 / T[i] for i in range(n)])
critical_value = table_values[n - 2]
# 5. вывод (выходные значения)
print(F)
print(T)
print(Chi_Square)
print(critical_value)
print(Chi_Square < critical_value)
Соседние файлы в папке ЛР1