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

2

.docx
Скачиваний:
49
Добавлен:
16.04.2021
Размер:
78.45 Кб
Скачать

ГУАП

КАФЕДРА № 41

ОТЧЕТ

ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

ассистент

М.Н. Шелест

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №2

Датчики случайных чисел. Построение гистограмм

по курсу: ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ

РАБОТУ ВЫПОЛНИЛА

СТУДЕНТКА ГР.

4716

С.А. Янышева

подпись, дата

инициалы, фамилия

Санкт-Петербург

2020

Лабораторная работа №2

Датчики случайных чисел. Построение гистограмм

  1. Цель работы

Изучение алгоритмов получения на ЭВМ чисел с заданным законом распределения и построения гистограмм.

  1. Вариант № 20

№ варианта

20

Эрланговский

k = 5, = 3

  1. Ход выполнения работы

    1. Графики функции

Графики зависимости оценок математического ожидания и дисперсии от объема выборки.

Рисунок 1 – Гистограмма сформированной выборки

Рисунок 2 – График зависимости оценки мат. ожидания от объёма выборки

Рисунок 3 – График зависимости оценки дисперсии от объёма выборки

Число элементов, попавших в данный интервал:

Номер интервала

1

2

3

4

5

6

7

8

9

10

Число элементов, попавших в данный интервал

18751

91875

107693

69445

32814

12609

4432

1375

385

100

Таблица 1 – Распределение элементов выборки по квантам гистограммы

    1. Описание разработанной программы

Листинг 1

from matplotlib import pyplot as plt import numpy as np import scipy.stats as st def gamma_hist(k, lmb, n): f_exp = lambda lmb: -(1 / lmb) * np.log(np.random.random()) f_gamma = lambda k, lmb: sum([f_exp(lmb) for _ in range(k)]) sample, steps, mu, d = [], [], [], [] res = [0, 1000] x_min = x_max = delta = 0 while min(res) < n: sample.append(f_gamma(k, lmb)) if len(sample) % 100 == 0: mu.append(sum(sample) / len(sample)) d.append(np.var(sample)) if len(sample) < 1000: continue elif x_min <= sample[-1] <= x_max: bar = int((sample[-1] - x_min) / delta) res[((bar + 1) * (bar <= len(res) - 1)) - 1] += 1 if 1 - sum(res) / len(sample) < 0.01: continue x_min = min(sample) x_max = max(sample) delta = (x_max - x_min) / 10 steps = [i * delta for i in range(0, 11)] res = [0] * 10 # Количество попавших в res[i] интервал элементов выборки # Запронение интервалов гисторгаммы for i in sample: bar = int((i - x_min) / delta) res[((bar + 1) * (bar <= len(res) - 1)) - 1] += 1 print(res) return sample, mu, d def main(): k, lmb = 5, 3 sample, mu, d = gamma_hist(k, lmb, 100) plt.xlim(0, 10) x = np.linspace(0, 10, 10000) plt.hist(sample, density=True, bins=12, label="Values") plt.plot(x, st.gamma.pdf(x, k, scale=1 / lmb), color="red") plt.ylabel('Probability') plt.show() plt.plot([100 * i for i in range(len(mu))], mu) plt.plot([100, len(mu) * 100], [k / lmb] * 2) plt.show() plt.plot([100 * i for i in range(len(d))], d) plt.plot([100, len(d) * 100], [k / (lmb ** 2)] * 2) plt.show() if __name__ == "__main__": main()

  1. Выводы

В ходе лабораторной работы был сформирован датчик случайных чисел с заданным законом распределения, построена гистограмма плотности распределения вероятности, а также графики зависимости оценки мат. ожидания от объёма выборки и зависимости оценки дисперсии от объёма выборки.

Соседние файлы в предмете Имитационное моделирование