
lab2
.pdf

1)Цель работы
Изучение алгоритмов получения на ЭВМ числе с заданным законом распределения и построения гистограмм.
Вариант 17
2)Ход работы
Записывается функция равномерного распределения:
f(x) = {
На рисунке 1 представлен график моделируемого закона распределения.
Рисунок 1 – График равномерного распределения В Приложении описывается программа, которая формирует результаты
анализа сформированной выборки с помощью заданного закона распределения. Представление результатов представлено в таблице 1, а
гистограмма на рисунке 2.
Таблица 1 – Результаты анализа сформированной выборки
№ |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
|
|
|
|
|
|
|
|
|
|
Число |
119 |
137 |
119 |
100 |
101 |
122 |
114 |
112 |
103 |
100 |
элементов в |
|
|
|
|
|
|
|
|
|
|
интервале |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|

Рисунок 2 – Гистограмма выборки Для проверки точности моделирования равномерного распределения
строятся графики математического ожидания (рисунок 3) и дисперсии
(рисунок 4) в зависимости от размера выборки.
Рисунок 3 – График зависимости оценок мат. ожидания от объема выборки
3

Рисунок 4 – График зависимости оценок дисперсии от объема выборки
3)Вывод
В ходе данной лабораторной работы я познакомился с тем, что такое датчик случайных чисел, как его реализовать. Данный датчик позволяет преобразовывать равномерное распределение в диапазоне от 2 до 3. В
результате работы была сформирована выборка, которая была распределена по входящим значением. Впоследствии была построена гистограмма,
позволяющая увидеть точность распределения, где «части» гистограммы повторяли линию уравнения теоретического значения распределения.
Для проверки использовались графики сравнения рассчитанных значений и теоретических значений математического ожидания и дисперсии в зависимости от объема выборки. Эти графики показали, что точность моделирования равномерного распределения устойчива (что может быть связано с тем, что интервал небольшой), а с увеличением размера выборки неизменна.
В ходе работы проблем не возникло.
4

Приложение
import random as rd
import matplotlib.pyplot as plt import numpy as np
a, b = 2, 3
def rasp(N_max): arr = []
x_min, x_max = 0, 0
N_mass = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
N = 0
delta = 0
while min(N_mass) < N_max: N += 1
arr.append(round(rd.random() * (b - a) + a, 2)) if delta != 0:
div = arr[-1] // delta mod = arr[-1] % delta for j in range(10):
if (div == j and mod > 0) or (div == j + 1 and mod == 0): N_mass[j] += 1
break
P = (N - sum(N_mass)) / N
if P >= 0.01 and len(arr) >= 2: x_min = min(arr)
x_max = max(arr)
delta = (x_max - x_min) / 10
N_mass = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for i in range(len(arr)):
div = (arr[i] - min(arr)) // delta
mod = round((arr[i] - min(arr)) % delta, 2) for j in range(10):
if ((div == j and mod > 0) or (div == j + 1 and mod ==
0)):
N_mass[j] += 1 break
return [N_mass, arr, x_min, x_max, delta]
def hist(N_max):
[N_mass, arr, x_min, x_max, delta] = rasp(N_max) N = sum(N_mass)
5

print(N_mass) x = []
y = []
for i in range(10): x.append(round(delta * i, 2)+x_min) y.append(1 / (b - a))
N_mass[i] = N_mass[i] / (N * delta) x = list(map(str, x))
plt.plot(x, y, color='r') plt.bar(x, N_mass, width=1) plt.title('Гистограмма выборки') plt.xlabel('X') plt.ylabel('Ni')
plt.show()
def static(N_min, N_max, step):
m, M, d, D, x = [], [], [], [], [] while N_min <= N_max:
[N_mass, arr, x_min, x_max, delta] = rasp(N_min) N_min += step
m.append(np.mean(arr)) M.append((b + a) / 2) D.append(((b - a) ** 2) / 12) d.append(np.var(arr)) x.append(len(arr))
plt.plot(x, m, x, M) plt.title('Мат ожидание') plt.xlabel('Размер выборки')
plt.legend (('Рассчитанное значение', 'Теоретическое значение')) plt.show()
plt.plot(x, d, x, D) plt.title('Дисперсия') plt.xlabel('Размер выборки')
plt.legend (('Рассчитанное значение', 'Теоретическое значение')) plt.show()
hist(100)
static(10,100,5)
rasp(100)
6