Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import factorial, exp, sqrt, pi, fabs
- from random import random
- # Сочитания из n по k
- def count_c(n, k):
- res = 1.0
- for i in range(n-k+1, n+1):
- res *= i
- for i in range(1, k+1):
- res /= i
- #print ('C ',k,' ',n,' = ', res)
- return res
- # Метод Бернулли
- def bernuli(n, p, m):
- q = 1 - p
- return count_c(n, m) * p**m * q**(n-m)
- # Метод Пуассона
- def puasson(n, p, m):
- return (n * p)**m / factorial(m) * exp(- n * p)
- # Гаус
- def gaus(x):
- return 1 / sqrt(2 * pi) * exp(- x * x / 2)
- # Локальная формула Муавра-Лапласа
- def local_muavr_laplas(n, p, k):
- q = 1 - p
- return 1/sqrt(n * p * q) * gaus((k - n * p) / sqrt(n * p * q))
- # Начальные данные
- n = 30
- p = 0.25
- # Теоретические подсчёты
- print('ТЕОРИЯ')
- print('Бернулли: ', 1 - sum([bernuli(n, p, m) for m in range(11)]))
- #print('Значения Бернулли: ', [bernuli(n, p, m) for m in range(11)]) # Печать
- print('Пуасон: ', 1 - sum([puasson(n, p, m) for m in range(11)]))
- #print('Значения Пуасон: ', [puasson(n, p, m) for m in range(11)]) # Печать
- print('Локальный Лаплас: ', 1 - sum([local_muavr_laplas(n, p, m) for m in range(11)]))
- #print('Значения Лаплас: ', [local_muavr_laplas(n, p, m) for m in range(11)]) # Печать
- print('Интегральный Лаплас: ', -(0.9292-1)) # x30 = 9.48 f(x>4) = 1
- print('\nПРАКТИКА')
- n = 10000
- tests = [1 if random() < p else 0 for i in range(n)] # Генерируем n испытаний
- print('Успешных тестов: ', sum(tests))
- print('Вероятность успеха: ', sum(tests)/n)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement