0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
|
|
1 | |
Моделирование случайных чисел с экспоненциальным законом распределения03.04.2012, 00:11. Показов 36470. Ответов 27
Метки нет (Все метки)
Программирования случайных чисел с экспоненциальным законом распределения. Товарищи помогите пожалуйста.
0
|
03.04.2012, 00:11 | |
Ответы с готовыми решениями:
27
Генерация случайных чисел с экспоненциальным законом распределения Сгенерировать последовательность 60 случайных чисел с экспоненциальным законом распределения с параметром Как подобрать последовательность 100 случайных чисел с экспоненциальным законом на C++ получения случайных чисел с заданным законом распределения |
03.04.2012, 00:52 | 2 | |||||
Сообщение было отмечено как решение
Решение
Логарифмическая функция распределения
F=1-exp(-lx) Тебе нужна обратная ей функция. То есть по оси F откладываем случайные числа от 0 до 1 с равномерным распределением, а соответствующие им значения на оси x будут случайными, распределёнными по нужному нам закону. Функция распределения F=1-exp(-lx) Обратная ей будет x=ln(1-F)/(-l) В итоге получаем F=rand()/RAND_MAX;//нецелочисленное деление x=ln(1-F)/(-l) 1-F распределена точно так же, как F, поэтому x=ln(F)/-l=ln( rand()/RAND_MAX )/-l=( ln(rand()) - ln(RANDMAX))/(-l) Итог:
3
|
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
|
|
03.04.2012, 17:13 [ТС] | 3 |
както слишком просто)
Добавлено через 4 минуты Компилятор на всё ето говорит ерор
0
|
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
|
|
03.04.2012, 17:36 [ТС] | 5 |
1>c:\users\славiк\documents\visual studio 2010\projects\slavik15\slavik15\slavik15.cpp(7): error C2601: getLrand: недопустимые локальные определения функций
1> c:\users\славiк\documents\visual studio 2010\projects\slavik15\slavik15\slavik15.cpp(5): эта строка содержит "{", которая пока не имеет парной 1>c:\users\славiк\documents\visual studio 2010\projects\slavik15\slavik15\slavik15.cpp(8): error C2065: RAND_MAX: необъявленный идентификатор 1>c:\users\славiк\documents\visual studio 2010\projects\slavik15\slavik15\slavik15.cpp(8): error C3861: ln: идентификатор не найден 1>c:\users\славiк\documents\visual studio 2010\projects\slavik15\slavik15\slavik15.cpp(8): error C3861: rand: идентификатор не найден 1>c:\users\славiк\documents\visual studio 2010\projects\slavik15\slavik15\slavik15.cpp(8): error C3861: ln: идентификатор не найден Добавлено через 1 минуту И как ещо вывести на екран примерно 100 результатов?
0
|
03.04.2012, 18:16 | 6 | |||||
Так ты это не тупо копируй в программу.
Я думал ты умеешь хоть что-то программировать. Когда ты заговорил о числах с экспоненциальным законом распределения, я подумал: ну уж наверное он знает, что такое случайные числа и может написать в программе простейший генератор равномерно распределённых на интервале чисел. А это оказывается твоя первая программа! Брось её и пиши Hello World! Приди к тому кто тебе дал задание и скажи "для меня это сложно, научи меня программировать сначала". Ты хоть понимаешь, что если я напишу её целиком, у тебя умений от этого всё равно не прибавится? Открой Шилдта или Страуструппа и читай!
3
|
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
|
|
03.04.2012, 18:29 [ТС] | 7 |
Очень болшое спасибо. Я уже умею немного, просто с генератором перый раз столкнулся.
0
|
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
|
|
03.04.2012, 18:57 | 8 |
RAND_MAX - это символическая константа или определяемое нами число?а то не сталкивался с RAND_MAX прежде
0
|
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
|
|
03.04.2012, 19:56 [ТС] | 9 |
а ln ето логарифм натуральный? А то мне ошыбку выдает
0
|
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
|
|
03.04.2012, 20:09 [ТС] | 11 |
если я делаю замену на log то мне выбивает
1>c:\users\славiк\documents\visual studio 2010\projects\slavi16\slavi16\slavik16.cpp(7): error C2668: log: неоднозначный вызов перегруженной функции 1> e:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(575): может быть "long double log(long double)" 1> e:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(527): или "float log(float)" 1> e:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(120): или "double log(double)" 1> при попытке сопоставить список аргументов "(int)" 1>c:\users\славiк\documents\visual studio 2010\projects\slavi16\slavi16\slavik16.cpp(7): error C2668: log: неоднозначный вызов перегруженной функции 1> e:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(575): может быть "long double log(long double)" 1> e:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(527): или "float log(float)" 1> e:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(120): или "double log(double)" 1> при попытке сопоставить список аргументов "(int)" 1>c:\users\славiк\documents\visual studio 2010\projects\slavi16\slavi16\slavik16.cpp(13): error C3861: printf: идентификатор не найден 1>c:\users\славiк\documents\visual studio 2010\projects\slavi16\slavi16\slavik16.cpp(15): error C3861: scanf: идентификатор не найден 1>c:\users\славiк\documents\visual studio 2010\projects\slavi16\slavi16\slavik16.cpp(16): error C3861: printf: идентификатор не найден 1>c:\users\славiк\documents\visual studio 2010\projects\slavi16\slavi16\slavik16.cpp(18): error C3861: scanf: идентификатор не найден 1>c:\users\славiк\documents\visual studio 2010\projects\slavi16\slavi16\slavik16.cpp(21): warning C4244: аргумент: преобразование "time_t" в "unsigned int", возможна потеря данных 1>c:\users\славiк\documents\visual studio 2010\projects\slavi16\slavi16\slavik16.cpp(25): error C3861: printf: идентификатор не найден 1>c:\users\славiк\documents\visual studio 2010\projects\slavi16\slavi16\slavik16.cpp(29): error C3861: getch: идентификатор не найден
0
|
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
|
|
03.04.2012, 20:14 | 12 |
так надо подключить библиотеки
stdio.h conio.h math.h
0
|
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
|
|
03.04.2012, 20:19 [ТС] | 13 |
подключены
0
|
04.04.2012, 00:18 | 14 | |||||
Вот такой вариант однозначно работает
1
|
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
|
||||||
04.04.2012, 00:50 | 15 | |||||
Зачем несколько раз логарифм брать?
2
|
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
|
|
04.04.2012, 16:00 [ТС] | 16 |
А почему мне всегда видает результат -0,0000 ?
0
|
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
|
||||||
04.04.2012, 16:36 | 17 | |||||
потому что для double надо в считывании\вводе писать "%lf", а не "%f"
2
|
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
|
|
04.04.2012, 19:36 | 18 |
0
|
0 / 0 / 0
Регистрация: 03.04.2012
Сообщений: 71
|
|
04.04.2012, 21:35 [ТС] | 19 |
а какой вариант правилный тот который ты дал или тамтой что выше ? Ато результати разные
0
|
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
|
|
04.04.2012, 21:36 | 20 |
1
|
04.04.2012, 21:36 | |
04.04.2012, 21:36 | |
Помогаю со студенческими работами здесь
20
Моделирование случайной величины с заданным законом распределения Генерация случайных величин с заданным законом распределения Моделирование случайной величины с экспоненциальным законом распределения методом обратной функции Как подобрать последовательность 100 случайных чисел с экспоненциальным законом Моделирование случайных величин с заданным законом распределения Моделирование и анализ случайных процессов с равномерным законом распределения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |