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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2013, 22:40   #1
БалаШагаЛ
Форумчанин
 
Регистрация: 11.02.2011
Сообщений: 131
По умолчанию Генерация случайных величин

Здравствуйте. Прошу помощи. В C++ нужно сгенерировать:
1) Число с заданным математическим ожиданием и среднеквадратичным отклонением (нормальное распределение)
2) Число с заданным математическим ожиданием (нормальное распределение)
Википедию и гугл смотрел, конкретных примеров кода не нашёл. С темой этой вообще не знаком, а там только страшные формулы.
Заранее спасибо за помощь!
БалаШагаЛ вне форума Ответить с цитированием
Старый 10.06.2013, 22:54   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

А чем отличаются 1) и 2) ?
Нормальное распределение определяется двумя параметрами, надо задавать оба. Если не задавать СКВО, то откуда оно возьмется? Это как географические координаты, обязательно нужна долгота и широта.
В С++ есть функция в VCL в модуле Math для генерации норм. распределенных случайных чисел:
Код:
extern PACKAGE Extended __fastcall RandG(Extended Mean, Extended StdDev);
Что будете использовать в качестве StdDev ?
type_Oleg вне форума Ответить с цитированием
Старый 11.06.2013, 01:38   #3
БалаШагаЛ
Форумчанин
 
Регистрация: 11.02.2011
Сообщений: 131
По умолчанию

Ой. Во втором опечатка вышла. Там экспоненциальное распределение.
БалаШагаЛ вне форума Ответить с цитированием
Старый 11.06.2013, 02:00   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
В С++ есть функция в VCL в модуле Math для генерации норм. распределенных случайных чисел:
Код:
extern PACKAGE Extended __fastcall RandG(Extended Mean, Extended StdDev);
не в С++, а в С++ Builder'е.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.06.2013, 02:44   #5
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Пепел Феникса, ну да, правильно. Я предполагал, что раз С++, то Билдер используют.

БалаШагаЛ, по экспоненциальному.
а) С помощью функции
Код:
 extern PACKAGE int __fastcall RandomRange(const int AFrom, const int ATo);
генерируете равномерно распределенное целое число (X например)от AFrom до ATo включительно.
б) затем нормируете его : Y=(X-AFrom)/(ATo-AFrom), получаете стандартно равномерно распределенное число Y
в) с помощью формулы Z=-M*Ln(Z+0.000000000001) получаете экспоненциально распределенное число Z с матем. ожиданием M.
Добавляется 0.000000000001, чтобы переполнения не было при Z=0.
И еще, надо 1 раз вызвать процедуру (фунцию) Randomize.

Это просто формулы, в Си сами переведите.
type_Oleg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генерация случайных чисел N.i.k.o.l.a.y. Помощь студентам 1 30.10.2012 21:38
генератор случайных величин Dane4ka Помощь студентам 6 13.04.2011 20:10
Генерация случайных чисел?! Evgeny_1 Фриланс 12 17.03.2010 14:23
Анализ генератора случайных величин 3bukvy Софт 16 15.09.2009 07:41
Генерация случайных... Яр|/||< (^_^) Общие вопросы Delphi 2 22.06.2009 21:33