Библиотека генерации экспоненциального закона распределения
Описание: Код для выполнения генерации распределния случайных чисел по закону экспоненциальному закону распределения.
Итак, Закон экспоненциального распределения наимболее распростран в дипломных работах по экономике для отображения теории спроса и предложения. Также, это одна из основных курсовых работ по программированию и прикладных информатиков, с целью написания алгоритма с экспоненциальным законом распределения. В данной статье рассатривается блок схема-алгоритм и исполняемый код на C#. Приступим…
Моделирование случайной величины с экспоненциальным распределением .
Цель. Реализовать на ЭВМ и исследовать на точность алгоритм моделирования случайной величины с экспоненциальным законом распределения:
методом обратной функции.
Этот закон распределения случайных величин имеет следующие графики:
- Для плотности распределений (рис. 1):
Для функции распределения (рис. 2):
Также экспоненциальное распределение имеет несколько числовых характеристик:
В данной статье для моделирования случайной величины, которая имеет экспоненциальный закон распределения, была использована следующая формула:
Алгоритм программы выглядит следующим образом:
Допустим, у нас есть проект в Visual Studio и мы создали класс «Exp.cs», который содержит довольно простой код (Листинг 1):
public class Exp { private Распределения.EnterValues enVal; private Распределения.OutValues ouVal; private Распределения._5 R; public Exp(Распределения.EnterValues enVal, Распределения.OutValues ouVal, Распределения._5 R) { this.R = R; this.enVal = enVal; this.ouVal = ouVal; } public void generate() { ouVal._arX = new double[enVal._N]; ouVal._NameOfR = "Экспоненциальное распределение"; for (int i = 0; i < enVal._N; i++) { ouVal._arX[i] = (-1.0) * (1.0 / enVal._Lya) * Math.Log(1.0 - R.RavnX()); } } }
Даю пояснения к листингу 1.
Здесь применяется подход из ряда статей «Распределения — (первая статья)«, т.е. имеется ввиду, что мы используем некий класс входных переменных(enVal) и выводимых(ouVal). В классе «ouVal» мы используем переменную для храненя случайных велечин (СВ) с экспоненциальным законом распредления «ouVal._arX[i]», куда мы записываем новые СВ. Входной параметр «enVal._Lya» является неотъемлемой частью этого закона распределния, а папраметр «enVal._N» означает количество генерирумых СВ.
Также, если вы используете «все в одном», то можно написать примерно следующимм кодом — Листинг 2.
Надеюсь, что вы имеете небольшое предстваления, как использовать эти листинги для своих целей.
Если все правильно сделать, то программа способна отображать графики и расчитывать величины правильно. Некоторые возможности представлены на рисунках ниже.