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

rand() cpp - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как поменять права доступа 777 http://www.cyberforum.ru/cpp-beginners/thread975556.html
Помогите пожалуйста. В инструкции по установке кмс сказано: "Установить права доступа 777 на каталоги ( /pfiles/ и /sm_ff/ ) и все вложенные (включая и файлы каталога(ов))" Что означает "и все вложенные (включая и файлы каталога(ов)"? В КМС каталога (ов) с таким названием нет. Что может означать "каталога(ов)"?
C++ Одномерный массив Создать массив из 20 вещественных чисел.Определить, сколько из них больше своих "соседей," т.е. предыдущего и последующего чисел. Обьясните, что сдесь нужно сделать? http://www.cyberforum.ru/cpp-beginners/thread975555.html
Реализация алгоритма FOREL C++
Не буду слишком наглым и не буду просить готовое решение, но вопросы будут на каждом шагу! для начала, не сильно раньше заморачивался, поэтому не помню как создать цикл ввода x и y! подскажите, если не затруднит
C++ Скажите где тут ошибки у меня ? Мне надо чтоб можно было найти z ,при любой переменной a
Скажите где тут ошибки у меня ? Мне надо чтоб можно было найти z ,при любой переменной a
C++ Указатели в двусвязном списке http://www.cyberforum.ru/cpp-beginners/thread975521.html
Здравствуйте. По заданию необходимо создать список школ (каждый элемент включает номер школы, район, число малышей, учащихся средней школы и старшеклассников) и отсортировать его по общему числу учеников. Совсем запуталась с указателями при сортировке пузырьком. В принципе, до этого пыталась просто переписывать информационные поля соседних элементов, сохраняя расположение указателей, но...
C++ Цикл Подскажите как реализовать цикл, что бы он имел шаги: 1 через 1 ; 2 через 2; 4 через 4; и т.д. Т.е. например 2 элемента посчитал 2 пропустил 2 посчитал... подробнее

Показать сообщение отдельно
Гром
209 / 128 / 11
Регистрация: 20.03.2009
Сообщений: 1,101
Записей в блоге: 16
Завершенные тесты: 1
12.10.2013, 20:26     rand() cpp
Смысл использования srand в том, что если его не использовать вообще, то каждый раз будут одни и те же последовательности псевдослучайных чисел. Если вызвать его один раз перед генерацией в виде srand(time(0)), то начальное значение последовательности всегда будет разным (т.к. время не будет одинаковым в двух разных вызовах программы) и сами последовательности, соответственно, тоже.

Если вызывать его каждый раз в цикле, то в тех итерациях, когда время будет "одинаковым" (система еще не обновила текущее время), вас будет каждый раз отбрасывать к первому генерируемому значению в последовательности, а поскольку результат srand(time(0)) в этих итерациях будет одинаков, и последовательности одинаковые, то вы будете получать одинаковые результаты.

К примеру, предположим, что srand устанавливает "затравочное" число на свой аргумент, а rand работает очень просто:
C++
1
2
3
4
5
6
7
8
9
10
void srand(uint x)
{
initValue = x;
}
uint rand()
{
uint res = initValue * 2 + 3;
initValue += 42;
return res;
}
Тогда получим:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for (uint i = 0; i < 10; ++i)
 //допустим, за все 10 итераций системное время не успело обновиться и равно 100
 {
 srand(time(0));   //initValue = 100;
 uint x = rand();   //initValue = 142, x = 203
 }   //в следующей итерации будут те же самые результаты
 
 
srand(time(0));   //допустим, время стало 150
for (uint i = 0; i < 3; ++i)
 x = rand();  //1. x = 303, initValue = 192;  2. x = 387, initValue = 234;  3. x = 471, initValue = 276
 
 
for (uint i = 0; i < 3; ++i)
 {
 srand(i);   //1. initValue = 0;   2. initValue = 1;    3. initValue = 2
 x = rand();   //1. x = 3, initValue = 42;   2. x = 5, initValue = 43;   3. x = 7, initValue = 44
 }
//все хорошо, но при каждом запуске программы последовательность будет одна и та же -
//она будет зависеть исключительно от значений i, которые от запуска к запуску не меняются
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru