Библиотека генерации экспоненциального закона распределения

Описание: Код для выполнения генерации распределния случайных чисел по закону экспоненциальному закону распределения.

Итак, Закон экспоненциального распределения наимболее распростран в дипломных работах по экономике для отображения теории спроса и предложения. Также, это одна из основных курсовых работ по программированию и прикладных информатиков, с целью написания алгоритма с экспоненциальным законом распределения. В данной статье рассатривается блок схема-алгоритм и исполняемый код на C#. Приступим…

Моделирование случайной величины с экспоненциальным   распределением .

Цель. Реализовать на ЭВМ и исследовать на точность алгоритм моделирования случайной величины с экспоненциальным законом распределения:

методом обратной функции.

Этот закон распределения случайных величин имеет следующие графики:

  • Для плотности распределений (рис. 1):
Рис. 1

Для функции распределения (рис. 2):

Рис. 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.

Надеюсь, что вы имеете небольшое предстваления, как использовать эти листинги для своих целей.

Если все правильно сделать, то программа способна отображать графики и расчитывать величины правильно. Некоторые возможности представлены на рисунках ниже.