Пятница, 17.05.2024
Королевство Delphi
Главное меню
Статьи
Наш опрос
Нравится раздел статьи?
Всего ответов: 68
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Разные » Примеры Delphi

Генератор случайных чисел распределенных по нормальному закону

На днях пришлось писать программу, которая генерировала бы случайные числа распределенные по нормальному закону.
Писать самому не очень хотелось, и я нашел на богом забытом сайте следующий юнит для Delphi: TfrGenerator.

Этот unit в общем случае генерировал случайные числа подчиненные любому закону распределения, но мне нужна была именно стандартная его сборка с нормальным законом. Комментарий автора к компоненту:

========================
Version 2.0, 12.07.2005
Класс TfrGenerator - модифицированный генератор случайных чисел;
генерирует случайную величину, подчиняющуюся заданному (в виде f(x)) закону распределения.

По определению плотности вероятности требуется, чтобы
1) f(x)>=0 в интервале [xMinCellBound..xMaxCellBound];
2) xMinCellBound <= xMaxCellBound

Использование:

Особенность алгоритма ( http://ps300.narod.ru/fr3d/prob.htm ) требует,
чтобы f(x) была ограниченной на интересующем нас интервале.
Т.е. в виде f(x) невозможно подать функцию 1/sqrt(x) на интервале [0..1] (несмотря
на то, что интеграл от нее на этом интервале конечен и ничто ей не мешает выступать
в роли закона распределения)

Нормированность от f(x) не требуется, она обеспечивается автоматически (т.е. использование
f(x) и Const*f(x) даст один и тот же результат)

В случае, если используемая f(x) на интересующем нас интервале не является
унимодальной (унимодальность - это когда только один максимум), следует вместо
GetMaxValueOfFunction использовать другую функцию!

Используемый алгоритм без труда может быть обобщен на функции нескольких
переменных, напрмер, f(x,y) или f(x,y,z)

Отличие от версии 1.0: функция, задающая плотность вероятности, вынесена в
отдельный класс, что позволило иметь одновременно несколько объектов
класса TfrGenerator, выдающих случайную величину по одному и тому же закону
(например, нормальному), но с разными параметрами (например, дисперсией и
средним арифметическим)

Домашняя страница с подробным описанием алгоритма: http://ps300.narod.ru/fr3d/prob.htm
Copyright (C) 1996,2004,2005 Сергей Пашков s300[собака]ngs.ru ICQ 117631343
Юзайте на здоровье!
========================

Поскольку такой полезный труд может потеряться в пределах сети решил перевыложить его.

Получить ссылку на материал

Категория: Примеры Delphi | Добавил: Барон (12.12.2011)
Просмотров: 3066 | Теги: генератор | Рейтинг: 0.0/0
[ Пожертвования для сайта ] [ Пожаловаться на материал ]

Если вам помог материал сайта кликните по оплаченной рекламе размещенной в центре

Поиск
Категории раздела
Delphi.NET [3]
Kylix Delphi for Linux [9]
Советы Дельферу [6]
Хитрости в Delphi [2]
Обзор Delphi [45]
Инсталлятор [11]
Пользовательский интерфейс [18]
Примеры Delphi [93]
Функции и процедуры [15]
Разные [31]
Королевство Delphi © 2010-2024
Яндекс цитирования