![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
18192123 |
![]()
Сообщение
#1
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
Здравствуйте!
Столкнулась вот с такой проблемой: В программе генерируются случайные числа, распределённые по нормальному з-ну. Но суть не совсем в этом. Когда требуется сгенерировать 500-1000 значений - всё нормально, когда же я захотела получить 10 000 значений - ошибка pow: DOMAIN error..
Объясните пожалуйста, в чём тут дело? Как избежать ошибки..? Подозреваю, что проблема можеть быть связана с областями определения (значения) pow или log10.. |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Во-первых, randomize()... Во-вторых, этот самый randomize() в цикле запускать нельзя, только перед началом вычислений, однократно. В третьих, желательно переменную yi сделать ЛОКАЛЬНОЙ:
double xi = 0., xiStar = 0.;и куда делся domain error? ![]() |
18192123 |
![]()
Сообщение
#3
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
и куда делся domain error? ![]() я добавила ещё одну ф-ю EXpLow для генерации чисел, распределённых по экспоненциальному з-ну.. внесла изменения относительно randomize.. Запустила - отработало без ошибок! Запустила снова - тут вам кроме pow: DOMAIN error, и log10: SING error, и pow: OVERFLOW error.. Вот как-то так.. ![]()
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
case 1:Внимательнее с этими вещами... |
18192123 |
![]()
Сообщение
#5
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
Ну просто напасть какая-то...Я снова увеличиваю размер генерируемой последовательности (до 60 000 элементов) - и вновь лезут ошибки log10:sign error... И в чём же теперь причина - для меня непостижимо(
Может рандом выдаёт какое-то недопустимое значение аргумента...? Сообщение отредактировано: 18192123 - 19.10.2009 21:13 |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата Может рандом выдаёт какое-то недопустимое значение аргумента...? Вполне возможно... Я тебе даже скажу какое значение должно выдаваться, чтобы ты получала то, что получаешь: НОЛЬ... Если rand() вернул 0, то xiStar (естественно) тоже будет = 0, а это некорректные входные данные, это оговорено в описании функции. Так что придется тебе гарантировать, что аргумент log10 не будет нулевым. Ну, например, так:int sure_rand() Если сделать просто: xiStar = static_cast<double>(rand() + 1) / static_cast<double>(RAND_MAX);, то получишь сбой, когда rand() вернет RAND_MAX... Тогда xiStar примет значение > 1, следовательно log10(xiStar) станет больше 0, и ты попытаешься вычислить квадратный корень из отрицательного числа. Поверь, ни к чему хорошему это не приведет... |
![]() ![]() |
![]() |
Текстовая версия | 20.06.2025 23:17 |