Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.56
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 403
#1

rand() не случайный - C++

27.04.2012, 15:00. Просмотров 1139. Ответов 5
Метки нет (Все метки)

почему на кажджой итерации rand() выдает одно и тоже значение ?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
srand((unsigned)time(NULL));
        vector<const string> var(4);
        var[0] = "Integer";
        var[1] = "Float";
        var[2] = "String";
        var[3] = "Date";
        int type_num ;
        string rands;
        for(int i = 0; i < col - 1; i++){
            rands = rand_str(max);
            type_num = rand() % 4;
            cout<<rands<<" "<<var[type_num]<<"; ";      
        }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2012, 15:00     rand() не случайный
Посмотрите здесь:

Случайный и не случайный вывод чисел в одномерном массиве - C++
Задача: Написать программу по обработке одномерных массивов. Размеры массивов вводить с клавиатуры. В консольном приложении предусмотреть...

не работает rand() - C++
#include &lt;vector&gt; #include &lt;iostream&gt; #include &lt;numeric&gt; #include &lt;cstdlib&gt; using namespace std; int main(int argc, char...

Функция rand() - C++
Здравствуйте, имеется код с реализацией алгоритма прямого поиска и я не могу понять как задается длина строки и подстроки, в частности...

rand() между 0 и 1 - C++
Здравствуйте! не смог с генерировать маленькое число в промежутке о и 1. Как это сделать? Гугл не помог...

Функция rand() - C++
Сделал задания: Комп должен угадать число какое я задал в уме. В диапазоне от 1 до 100 . void Ex() { srand(time(NULL)); int first =...

оператор rand - C++
Суть такова: задаю int blala = 1+rand() % 6;, но числа рандомит от НУЛЯ. Почему ? в прочих недопрогах всё работало на ура. #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
laplas
15 / 11 / 1
Регистрация: 25.12.2010
Сообщений: 91
27.04.2012, 15:25     rand() не случайный #2
это значит, что одна твоя итерация быстрее делается,чем за одну секунду
вот так попробуй

C++
1
srand (time(0)|clock());
Humanoid
Почетный модератор
9830 / 3828 / 163
Регистрация: 12.06.2008
Сообщений: 11,448
27.04.2012, 15:26     rand() не случайный #3
Возможно, внутри rand_str() вызывается srand()
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 403
27.04.2012, 15:32  [ТС]     rand() не случайный #4
Цитата Сообщение от Humanoid Посмотреть сообщение
Возможно, внутри rand_str() вызывается srand()
Вы оказались правы!
интересно, чем второй вызов помешал?
Humanoid
Почетный модератор
9830 / 3828 / 163
Регистрация: 12.06.2008
Сообщений: 11,448
27.04.2012, 15:58     rand() не случайный #5
Цитата Сообщение от Gabberr Посмотреть сообщение
интересно, чем второй вызов помешал?
rand() высчитывается по определённой формуле. И использует для этого внутреннюю переменную. Именно для этого вначале вызывается srand(), что бы эту переменную привести в непредсказуемое состояние, что бы после этого rand() были по-настоящему случайными.
Для srand() ты передаёшь текущее время... значит, если в течении 1 секунды ты несколько раз вызовишь
C++
1
2
3
4
5
6
srand(time(NULL));
cout << rand();
srand(time(NULL));
cout << rand();
srand(time(NULL));
cout << rand();
То rand() будет возвращать всё время одно и тоже значение.
srand() установит внутреннюю переменную в значение time()... первый вызов rand() на основе этого значения высчитает случайное значение и изменит эту переменную, что бы следующий rand() отличался и был бы случайным. Но в следующий раз мы опять вызываем srand() и опять эту внутреннюю переменную устанавливаем в тоже самое значение. Поэтому и следующий rand() будет рассчитывать случайное число на основе того же самого значения.

Во, сколько бреда понапиал
Проще говоря, srand() должен вызываться только один раз в программе.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2012, 16:11     rand() не случайный
Еще ссылки по теме:

функция rand() - C++
функция rand(). Расскажите об этой функции плиз. Смотрел в инете но везде какойто бред. Как с её помощью можно задать последовательность...

генератор rand - C++
Добрый вечер! Возникла проблема с генератором rand. Нужно немного подредактировать код Условие задачи По самолёту проводится 3...

double rand() - C++
как записать случайное double число? точнее как в диапазоне записать, например от -100.0 до 100.0??

Использование rand() - C++
Уже сам решил) а как закрыть незнаю

Rand() с картами - C++
Нужно перемешать карты, используя rand(), но у меня получается, что карты повторяются, в чем я ошиблась? #include&lt;iostream&gt; ...

Функция rand() - C++
Добрый день. Написал следующую функцию: #include &lt;iostream&gt; #include &lt;stdlib.h&gt; using namespace std; int main (int argc,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 403
27.04.2012, 16:11  [ТС]     rand() не случайный #6
Понятно, разобрался!
Yandex
Объявления
27.04.2012, 16:11     rand() не случайный
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru