![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Syrex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 9.2.2006 Где: Москва Репутация: нет Всего: 1 |
#include <stdio.h>
#include <conio.h> #include <stdlib.h> double vozd() { double s=0; for(int i=0;i<=11;i++) { s=s+0.04165*(-0.5+((double)rand()/(double)RAND_MAX)); } return s; } int main() { char c=0; clrscr(); while(c!=10) { printf("Vozd=%f\n",vozd());//выдает всегда одинаковые значения при перезапуске проги c++; } getch(); return 0; } |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
Естественно. Генератор случайных чисел нужно инициализировать числовым значением.
Чтобы оно менялось - инициализируй от времени. Если у тебя POSIX-компилятор - используй rand48, он там частенько есть. Если у тебя LINUX - читай из /dev/random - там генератор случайностей, инициализированный от флуктуаций температуры процессора. Ах, забыл написать, в простом случае инициализация srand(int seed) Это сообщение отредактировал(а) comcon1 - 28.2.2006, 15:23 |
|||
|
||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| Syrex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 9.2.2006 Где: Москва Репутация: нет Всего: 1 |
Ну допустим я поставлю
ВСЕ РАВНО ВЫВОДИТ (-0,25) ВО ВСЕХ 10 ЦИКЛАХ |
|||
|
||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Запустил 2 раза подряд, вот результаты:
Vozd=-0.019900 Vozd=-0.017569 Vozd=-0.000719 Vozd=0.000943 Vozd=0.008708 Vozd=-0.014246 Vozd=-0.046480 Vozd=0.016029 Vozd=-0.025492 Vozd=0.089039 Press any key to continue Vozd=0.002602 Vozd=-0.066045 Vozd=-0.022252 Vozd=0.068616 Vozd=0.048177 Vozd=0.006608 Vozd=-0.030189 Vozd=0.030809 Vozd=0.066176 Vozd=0.052914 Press any key to continue -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| Syrex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 9.2.2006 Где: Москва Репутация: нет Всего: 1 |
Компилю в Борланд С++ 5.02 код:
И получаю на выходе: Vozd=-0.250000 Vozd=-0.250000 Vozd=-0.250000 Vozd=-0.250000 Vozd=-0.250000 Vozd=-0.250000 Vozd=-0.250000 Vozd=-0.250000 Vozd=-0.250000 Vozd=-0.250000 |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
rand()/RAND_MAX все время будет давать 0. Сделай так:
и скажи, че получилось. Потому что rand() выдает int. Хочешь дробные - юзай лучше random() и srandom(). Это сообщение отредактировал(а) comcon1 - 28.2.2006, 16:19 |
|||
|
||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
так сделай
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| Syrex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 9.2.2006 Где: Москва Репутация: нет Всего: 1 |
Спасибо - comcon1теперь все заработало. А зачем тут Double??
|
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
Потому что оператор "/" для чисел int и int делает деление с округлением в меньшую сторону.
Дальше сам додумаешься. |
|||
|
||||
| Syrex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 9.2.2006 Где: Москва Репутация: нет Всего: 1 |
АГА. Огромное тебе спс за помошь!
|
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
|
|||
|
||||
| Syrex |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 262 Регистрация: 9.2.2006 Где: Москва Репутация: нет Всего: 1 |
А как закрыть?? Просто написать
тема закрыта Модератор: У тебя как автора темы должна быть ссылка "пометить как решенный" над быстрым ответом. Это на будущее. Тему закрыла. Это сообщение отредактировал(а) Earnest - 28.2.2006, 17:51 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |