Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по функции rand(), rand выдает все время те же самые числа 
V
    Опции темы
maxfol
Дата 19.1.2012, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.2.2009

Репутация: нет
Всего: нет



Код

int input_check ()
{
    int i;
     rand();
     for (i=1;i<10;i++)
     {
         rand();
         num1 = rand() %10 ;
         num2 = rand() %10;
           while (num1==num2)
            {
              rand();
              num2 = rand() %10;
            }
      printf("num1 = %d num2 = %d\n", num1,num2);
     }
     
     return '0';
}


Функция при каждом запуске программы выдает одинаковые комбинации чисел..  не могу понять почему ..
user posted image
и так при каждом запуске программы.
PM MAIL   Вверх
Goganchic
Дата 19.1.2012, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



попробуй srand ( time(NULL) ); перед первым использванием rand, ну и #include <time.h> конечно в начале файла
PM Jabber   Вверх
bsa
Дата 19.1.2012, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



rand() возвращает псевдослучайные числа рассчитанные по определенному алгоритму. Этот алгоритм использует скрытую переменную seed, которая меняется при каждом обращении к rand. От значения этой переменной зависит вся последовательность выдаваемых чисел. 
Есть функция srand, которая позволяет задать значение этой переменной.
Обычно, это делается один раз в начале программы. В качестве начального значения используют текущее время:
Код
int main()
{
   srand(time(NULL));
   ...
}

PM   Вверх
borisbn
Дата 19.1.2012, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(maxfol @  19.1.2012,  12:39 Найти цитируемый пост)
Функция при каждом запуске программы выдает одинаковые комбинации чисел..  не могу понять почему ..

Это сделано специально и это очень удобно в отладке. Представь, что твоя программа на какой-то определённой последовательности падает. Если бы rand() всегда генерил разную последовательность, то для отладки твоей программы нужно было бы записать ту последовательность, на которой она падает, а затем воспроизводить её, чтобы убедиться, что ошибка устранена. А так достаточно запоминать всего один параметр (seed) и при падении программы заменить
Код
srand( time( NULL ) );

на
Код
srand( значение seed, на котором падало );




--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
maxfol
Дата 20.1.2012, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.2.2009

Репутация: нет
Всего: нет



Всем спасибо за ответы
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.