Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удалить из последовательности первый по порядку элемент, наиболее близкий по значению к среднему арифметическому http://www.cyberforum.ru/cpp-beginners/thread560115.html
Помогите пожалуйста составить программу: Даны целые числа a1, ..., an. Удалить из последовательности первый по порядку элемент, наиболее близкий по значению к среднему арифметическому чисел...
C++ рогалики, изображение в консоли здравствуйте, решил попробовать написать простую игру, простенький рогалик. Столкнулся с двумя проблемами: при перерисовки консоли мигает консоль (использую полную очистку консоли через... http://www.cyberforum.ru/cpp-beginners/thread560104.html
Ввод и сохранение данных вектора C++
эсть програма но нужно добавить несколько функцый помогите кому не сложно #include "stdafx.h" #include <iostream> #include <algorithm> #include <vector> using namespace std; vector <int> ...
C++ Вывести журнал успеваемости студентов группы в алфавитном порядке
Нужно написать код для решения следующей задачи Имеются сведения об успеваемости студентов факультета, который включают фамилию и инициалы студента, номер группы и оценки по m предметам.Студент...
C++ Колода карт http://www.cyberforum.ru/cpp-beginners/thread560089.html
реализация колоды карт :wall:
C++ Считывание файла с пробелами. Подскажите, пожалуйста, как при считывание текстового файла сохранить пробелы между словами. Темы видел но так и не понял. подробнее

Показать сообщение отдельно
Humanoid
Почетный модератор
9870 / 3769 / 173
Регистрация: 12.06.2008
Сообщений: 11,175
27.04.2012, 15:58
Цитата Сообщение от 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() должен вызываться только один раз в программе.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.