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

Лабараторная работа4

.docx
Скачиваний:
11
Добавлен:
17.06.2021
Размер:
45.19 Кб
Скачать

Министерство образования и науки РФ

Федеральное государственное бюджетное образовательное учреждение высшего образования

«Омский государственный технический университет»

Кафедра «Комплексная защита информации»

Отчёт по лабораторной работе № 4

по дисциплине

«Математические модели в информационных системах»

Выполнил

Студент гр. ИВТм-192

Козлитин Ю.В. ______________

(подп., дата)

Проверил

Профессор каф. КЗИ

Магазев А.А ______________

(подп., дата)

Омск 2019

Ход работы

Задание: разработать генератор нормальной случайной величины при помощи нормальной центральной теоремы.

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

Для разработки генератора необходимо воспользоваться генератором равномерно распределенной псевдослучайной величины. В соответствии с центральной предельной теоремой сформированное случайное число является асимптотически нормальной величиной со средним , и дисперсией . Когда для формирования нормально распределенных случайных чисел суммируются равномерно распределенные случайные величины из интервала [0;1], то приемлемые результаты в качестве параметров стандартного нормального закона дает формула

(1)

где – это число, сгенерированное генератором равномерных псевдослучайных чисел. График распределения псевдослучайных величин, сгенерированных по формуле (1), представлен на рисунке 1.

Рисунок 1 – Распределение псевдослучайных величин, сгенерированных при помощи центральной предельной теоремы

Заключение

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

Приложение А Исходный код программы

using System;

using System.Collections.Generic;

using System.IO;

using System.Text;

using ThreeGenerators;

namespace CentralLimitTheorem

{

public class CLTGenerator

{

public CLTGenerator(int generatorModule = 259200)

{

this.generatorModule = generatorModule;

edg = new EvenDistributionGenerator();

}

public void generate(string filename)

{

using (FileStream stream = new FileStream(filename, FileMode.Create, FileAccess.ReadWrite))

{

StreamWriter writer = new StreamWriter(stream);

for (int i = 0; i < generatorModule; i++)

{

double next = generateNext();

writer.WriteLine(next);

}

}

}

public double generateNext()

{

double sum = 0;

for (int i = 0; i<12; i++)

{

sum += edg.generateNext();

}

return sum - 6;

}

private EvenDistributionGenerator edg;

private int a, b, generatorModule;

}

static void Main(string[] args)

{

CLTGenerator clt = new CLTGenerator();

clt.generate("results.csv");

}