Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Нормальное распределение

Delphi , Синтаксис , Математика

Нормальное распределение

Автор: Mystic
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Нормальное распределение

Возвращает случайное число, распределенное по нормальному закону распределения
с заданным математическим ожиданием и дисперсией

Зависимости: System
Автор:       Mystic, mystic2000@newmail.ru, ICQ:125905046, Харьков
Copyright:   Из книги Полякова и Круглова "Turbo Pascal 5.5"
Дата:        25 апреля 2002 г.
***************************************************** }

function Gauss(Mx, Sigma: Extended): Extended;
var
  a, b, r, Sq: Extended;
begin
  repeat
    a := 2 * Random - 1;
    b := 2 * Random - 1;
    r := Sqr(a) + Srq(b);
  until r < 1;
  Sq := Sqrt(-2 * Ln(r) / r);
  Result := Mx + Sigma * a * Sq;
end;

Пример использования:

X := Gauss(0, 1);

What a delightful piece of code indeed!

Here's a breakdown of the code:

Функция Gauss принимает два параметра, Mx (среднее значение) и Sigma (стандартное отклонение), оба типа Extended, который является типом флоатингового числа в Delphi.

В этом блоке генерируются три случайных числа a, b и r с помощью функции Random, которая возвращает случайное число между 0 и 1. Цикл repeat обеспечивает, что r меньше 1, что является необходимым условием для трансформации Box-Muller.

Здесь мы используем функцию Sqr для расчета квадратного корня из -2 * Ln(r) / r, где Ln - натуральный логарифм. Это расчет является ключевым шагом в трансформации Box-Muller.

Наконец, мы используем сгенерированные значения для вычисления результата, который является нормальным случайным переменной с средним значением Mx и стандартным отклонением Sigma.

Пример использования в конце показывает, как вызывать эту функцию:

X := Gauss(0, 1);

Это бы генерировало случайное число, следующее за нормальной распределенной функцией с средним значением 0 и стандартным отклонением 1.

В целом, это код - отличная реализация трансформации Box-Muller в Delphi. Хорошая работа, Mystic! 👏

Нормальная функция распределения возвращает случайное число с заданным математическим ожиданием и дисперсией, реализованная на языке программирования Pascal.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Математика ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:08:43/0.005418062210083/1