
ЛР 2 / ЛАБА_2
.pdf

Цель работы:
Изучение алгоритмов получения на ЭВМ чисел с заданным законом распределения и построения гистограмм.
Вариант №9
Равномерный закон распредления
Ход работы:
Нахождение количества чисел, подсчет количества вхождений значений в интер-
валы, минимальное и максимальное значение массива и времени работы программы в со-
ответствии с рисунком 1.
Рисунок 1 – Вывод значений График зависимости значений нормального распределения от количества вхожде-
ний в интервалы с плотностью распределения в соответствии с рисунком 2 (Листинг A).
Рисунок 2 – График нормального распределения Список использованных переменных:
Название |
Тип переменной |
Хранимое значение |
mass |
массив |
все числа выборки |
|
|
2 |

x, x1 |
float |
случайные числа от 0 до 1 |
alph, alph1 |
float |
закон нормального распределения для случайных |
|
|
величин |
math |
int |
мат ожидание |
disp |
int |
дисперсия |
grafic |
массив |
кол-во чисел выборки, попадающее в промежутки |
P |
float |
экспериментальная оценка вероятности |
n |
int |
кол-во элементов выборки |
x_min, x_max |
float |
минимальный и максимальный эл-ты выборки |
delta |
float |
длительность интервалов |
k |
int |
номер интервала |
M |
float |
значения мат ожидания на каждом сотом шаге |
D |
float |
значения дисперсии на каждом сотом шаге |
N |
float |
общее кол-во шагов |
x |
float |
нормированные интервалы |
y |
float |
нормированное кол-во вхождений в интервалы |
start_time |
float |
время работы программы |
График зависимости математического ожидания от размера выборки с линией теоритеческого математического ожидания в соответствии с рисунком 3.
Рисунок 3 – График зависимости математического ожидания от размера выборки График зависимости дисперсии от размера выборки с линией теоритеческой
дисперсии в соответствии с рисунком 4.
3

Рисунок 4 – График зависимости дисперсии от размера выборки
Вывод:
В ходе лабораторной работы я познакомилась с алгоритмами получения на ЭВМ чисел с равномерным законом распределения, построила гистограмму сформированной выборки по интервалам, а также графики зависимости математического ожидания и дисперсии от размера выборки, добавив на график теоретическое значение.
По полученным графикам можно сделать вывод, что с увеличением выборки оценки дисперсии и математического ожидания приближаются к теоретическим.
Доп: №34
4

Листинг А
from math import * import numpy as np import random
from scipy.stats import uniform import matplotlib.pyplot as plt import time
def main():
start_time = time.time() a, b = 0, 5
mass = [] # массив выборки – пустой
mean, sd = (b+a)/2, ((b-a)**2)/12 # мат ожидание, дисперсия n = 0 # количество элементов выборки
delta = 0
x_min, x_max = 0, 0 grafic = np.zeros(10) M = []
D = []
N = []
while min(grafic) < 1000: n += 1
x = random.uniform(0.0, 1.0) #независимая случайная величина, распре-
деленная по рав-му закону alph = x * (b-a) + a mass.append(alph)
P = (n - sum(grafic)) / n # вероятность попадания случайной величины за границы данного интервала
if len(mass) >= 2:
if P >= 0.01: # Пересчет всех Ni grafic = [0] * 10
x_min = np.amin(mass) x_max = np.amax(mass)
delta = (x_max - x_min) / 10
for i in mass: # подсчет кол-ва вхождений элементов в интер-
валы
k = floor((i - x_min)/delta) if k == 10:
k = 9
if 9 >= k >= 0:
5

grafic[k] += 1 print(grafic)
else: # нахождение номера интервала последнего сгенерированного числа в массиве
k = floor((mass[-1] - x_min) / delta) if k == 10:
k = 9
if 9 >= k >= 0: grafic[k] += 1
print(grafic)
if n % 100 == 0:
M.append(np.mean(mass)) # мат ожидание на каждом сотом шаге
D.append(np.var(mass)) # дисперсия на каждом сотом шаге
N.append(n) # количество элементов
print('Количество чисел:', n)
print('Количество вхождений в интервалы', grafic) print('Минимальное число:', x_min, 'Максимальное число:', x_max) print('Время работы программы:', time.time() - start_time)
x = [] # значения интервалов (по середине) y = [] # кол-во попаданий в эти интервалы x.append(x_min + delta/2)
for i in range(9): x.append(x[i] + delta)
for i in range(0, 10): y.append(grafic[i] / ((n)*delta))
print(x)
print(y)
# график гистограммы и плотности распределения plt.xlabel('Интервалы') plt.ylabel('Количество вхождений в интервалы') line = np.linspace(x_min, x_max, 100)
plt.plot(line, uniform.pdf(line, loc=a, scale=b-a), lw=5, alpha=0.6, color='r')
plt.bar(x, y, width=delta)
6

plt.title('Гистограмма сформированной выборки') plt.show()
# график мат ожидания
x = np.arange(0, len(N), 1) plt.figure(3)
plt.plot(x, M)
plt.plot(range(0, len(x)), [mean for i in range(0, len(x))]) plt.title("Мат ожидание")
plt.xlabel('размер выборки') plt.ylabel('мат. ожидание') plt.show()
# график дисперсии plt.figure(4) plt.plot(x, D)
plt.plot(range(0, len(x)), [sd for i in range(0, len(x))]) plt.title("Дисперсия")
plt.xlabel('размер выборки') plt.ylabel('дисперсия') plt.show()
main()
7