![](/user_photo/_userpic.png)
Лабараторная работа4
.docxМинистерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Омский государственный технический университет»
Кафедра «Комплексная защита информации»
Отчёт по лабораторной работе № 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");
}