Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2008, 18:24   #1
elsin
Пользователь
 
Регистрация: 10.05.2008
Сообщений: 36
Вопрос генератор псевдослучайных чисел - распределение

Господа, подскажите, пожалуйста, если я с помощью random в цикле, перед циклом стоит randomize, генерирую последовательность псевдослучайных натуральных чисел, то какое распределение я получу, равномерное или нет?
elsin вне форума Ответить с цитированием
Старый 13.05.2008, 18:50   #2
frodo
Пользователь
 
Регистрация: 06.04.2008
Сообщений: 48
По умолчанию

Цитата:
Сообщение от elsin Посмотреть сообщение
Господа, подскажите, пожалуйста, если я с помощью random в цикле, перед циклом стоит randomize, генерирую последовательность псевдослучайных натуральных чисел, то какое распределение я получу, равномерное или нет?
маленько непонятно, как понять равномерное??? у тя просто будет генерироваться случайные в прямом смысле случайны числа из диапазона!!!
P.S. кстати код там маленький можеш сам попробывать и посмотреть результат!
frodo вне форума Ответить с цитированием
Старый 13.05.2008, 18:54   #3
elsin
Пользователь
 
Регистрация: 10.05.2008
Сообщений: 36
По умолчанию

Равномерное - это из теории вероятностей, т.е. вероятность выпадения того или иного числа равновероятна.
P.S.: Если я правильно помню из тер.вера
elsin вне форума Ответить с цитированием
Старый 13.05.2008, 18:59   #4
elsin
Пользователь
 
Регистрация: 10.05.2008
Сообщений: 36
По умолчанию

Допустим random действительно генерит дискретную последовательность по равномерному закону распределения, тогда у меня возникает другой вопрос: Как из этого равномерного распределения сделать другое распределение?

Или как в Delphi сгенерить дискретную последовательность с не стандартным распределением(не стандартную имею в виду, что даже в MATLAB таких распределений не делается автоматом).
elsin вне форума Ответить с цитированием
Старый 13.05.2008, 19:07   #5
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от elsin Посмотреть сообщение
Или как в Delphi сгенерить дискретную последовательность с не стандартным распределением(не стандартную имею в виду, что даже в MATLAB таких распределений не делается автоматом).
Ну скажем, грубо говоря, умножать то, что вернул random на закон распределения.
------------------------
Ой, в смысле не умножать, а отправлять в ЗР аргументом.

Последний раз редактировалось B_N; 13.05.2008 в 19:09.
B_N вне форума Ответить с цитированием
Старый 13.05.2008, 19:10   #6
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

random работает по нормальному распределению.
rocklistener...
5naip вне форума Ответить с цитированием
Старый 13.05.2008, 19:17   #7
elsin
Пользователь
 
Регистрация: 10.05.2008
Сообщений: 36
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
Ой, в смысле не умножать, а отправлять в ЗР аргументом.
А этот как не подскажете? С учетом дискретности последовательности.

Для непрерывных последовательностей: "умножается" на функцию обратную от требуемого закона распределения, но этот метод для дискретных не работает
elsin вне форума Ответить с цитированием
Старый 13.05.2008, 19:23   #8
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

random - равномерное распределение.
В модуле Math есть функция RandG - генерирует нормально псевдораспределенную последовательность чисел с заданным средним значением Mean и стандартным отклонением StdDev.
Код:
function RandG(Mean, StdDev: Extended): Extended;
{ Marsaglia-Bray algorithm }
var
  U1, S2: Extended;
begin
  repeat
    U1 := 2*Random - 1;
    S2 := Sqr(U1) + Sqr(2*Random-1);
  until S2 < 1;
  Result := Sqrt(-2*Ln(S2)/S2) * U1 * StdDev + Mean;
end;
Посмотрите еще здесь http://www.srcc.msu.su/num_anal/lib_na/cat/cat14.htm правда алгоритмы на Фортране и С.

Последний раз редактировалось _Dmitry; 13.05.2008 в 19:28.
_Dmitry вне форума Ответить с цитированием
Старый 13.05.2008, 19:43   #9
elsin
Пользователь
 
Регистрация: 10.05.2008
Сообщений: 36
По умолчанию

Спасибо, попробую, только вот до дома бы доехать по пробкам


Цитата:
Сообщение от _Dmitry Посмотреть сообщение

Посмотрите еще здесь http://www.srcc.msu.su/num_anal/lib_na/cat/cat14.htm правда алгоритмы на Фортране и С.
К сожалению там рассмотрены алгоритмы для непрерывных последовательностей, а не для дискретных.
elsin вне форума Ответить с цитированием
Старый 13.05.2008, 19:48   #10
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

5naip, если бы random работал по нормальному распределению, то в центре заполняемых рэндомом картинок было бы характерное пятно, чего не наблюдается.

elsin, большинсво существующих генераторов возвращают либо целое число в указанном диапазоне, либо вещественное в промежутке 0..1. Даже ряд из 65536 чисел, если его привести к промежутку 0..1 (в вещественном виде), вполне можно для большинства применений считать непрерывным.
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
генератор случайных чисел на С++ ANTI Общие вопросы C/C++ 20 12.04.2009 13:02
Генерация последовательности псевдослучайных натуральных чисел с требуемым распределением вероятности elsin Фриланс 4 19.11.2008 08:57
Массивы и генератор случайных чисел Psyka Помощь студентам 6 31.07.2008 05:53
Генератор случайных чисел в СМО Shoker Помощь студентам 1 13.10.2007 08:40