Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 64

Что означают строки rand и srand

10.02.2019, 06:22. Показов 5308. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток !

Дан код:

C++
1
2
rand() % (range_max - range_min + 1) + range_min;
srand(static_cast<unsigned>(time(NULL)));
Расскажите пожалуйста, что именно делают данный строки. Как они работают ?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.02.2019, 06:22
Ответы с готовыми решениями:

Объясните что делает эта программа (for,rand,srand)
Пожалуйста объясните что делает эта программа. Поподробней про for(i=1;i&lt;=5;i++) , a=rand()%(20-10+1)+10; и b=b+a;c=b/i; #include...

srand и rand
Здравствуйте. Надо заполнить массив единицами и нулями. srand (time (NULL)); for (int i=0; i&lt;size; i++){ val=rand()%2; } ...

rand, srand и т.д
Дана целочисленная матрица A (N,M), в которой имеются ровно два одинаковых элемента. Найти индексы этих элементов. Вопрос: можно ли...

7
Модератор
Эксперт С++
 Аватар для zss
13778 / 10971 / 6491
Регистрация: 18.12.2011
Сообщений: 29,258
10.02.2019, 09:44
Цитирую микрософт:
rand
02.01.2018
Время чтения: 2 мин
Соавторы
Colin Robertson olprod OpenLocalizationService

Создает псевдослучайное число с помощью хорошо известны и полностью воспроизводимые алгоритма. Существует программно более безопасная версия этой функции доступен; см. в разделе rand_s. Создаваемые номера rand криптографически небезопасны. Для более криптографически безопасный Генерация случайных чисел, используйте rand_s или функции, объявленные в стандартной библиотеке C++ в <случайных >.
Синтаксис
C

C
1
int rand( void );
Возвращаемое значение

функция RAND Возвращает псевдослучайное число, как описано выше. Ошибка не возвращается.
Примечания

Rand функция возвращает псевдослучайное целое число в диапазоне от 0 до RAND_MAX (32767).

Используйте srand функции, чтобы задать начальное значение генератора псевдослучайных чисел до вызова функции rand.

Rand функция создает последовательность хорошо известного и не подходит для использования в качестве функции шифрования. Для более криптографически безопасный Генерация случайных чисел, используйте rand_s или функции, объявленные в стандартной библиотеке C++ в <случайных >. Сведения о недостатках rand и как <случайных > этими недостатками, см. в этом видео под названием rand считается опасные.
Требования
Подпрограмма Обязательный заголовок
rand <stdlib.h>
srand

02.01.2018
Время чтения: 2 мин
Соавторы
Colin Robertson olprod OpenLocalizationService Saisang Cai Andy Pasic

Задает начальное значение для генератора псевдослучайных чисел, используемый rand функции.
Синтаксис
C
C
1
2
3
void srand(
   unsigned int seed
);
Параметры

Начальное значение
Начальное значение для создания псевдослучайных чисел
Примечания

Srand функция задает начальную точку для создания ряда псевдослучайных целых чисел в текущем потоке. Для повторной инициализации генератора для создания результатов той же последовательности, вызовите srand работать и использовать тот же начальное значение аргумент еще раз. Любое другое значение для начальное значение задает генератора другую начальную точку создания последовательности псевдослучайных чисел. функция RAND извлекает псевдослучайных чисел, которые создаются. Вызов rand предшествующий вызову srand создает ту же последовательность, что и вызов метода srand с начальное значение переданный в качестве 1.
Требования
Подпрограмма Обязательный заголовок
srand <stdlib.h>
1
42 / 35 / 11
Регистрация: 22.09.2017
Сообщений: 125
10.02.2019, 09:45
rand() - возвращает следующее псевдослучайное число размерности int;
srand() - получает в качестве аргумента число, от которого начнет генерировать псевдослучайную последовательность.

в 1й строке возвращается псевдослучайное число в диапазоне от range_min до range_max.
во 2й строке передаем значение времени в функцию srand от которого будет генерироваться новые числа.
1
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 64
10.02.2019, 12:12  [ТС]
Это все конечно замечательно, спасибо. И все же мне не совсем понятно, что именно делают данные строки.

Возьмем код:

C++
1
2
3
4
const unsigned int ARRSIZE = 100;
const int ABSLIMIT = 100;
 
rrand(point, -ABSLIMIT, ABSLIMIT, ARRSIZE - 1);
-ABSLIMIT будет range_min, а ABSLIMIT - range_max. В таком случае, какой диапазон будет у генератора чисел:
C++
1
rand() % (range_max - range_min + 1) + range_min;
Теперь возьмем srand:

C++
1
srand(static_cast<unsigned>(time(NULL)));
Что в данной строке делают (time(NULL)) и static_cast<unsigned>. Есть ли подходящий пример к данной строке, чтобы мне было более понятно ?
0
Модератор
Эксперт С++
 Аватар для zss
13778 / 10971 / 6491
Регистрация: 18.12.2011
Сообщений: 29,258
10.02.2019, 14:49
range_min - минимальное значение
range_max - максимальное
Цитата Сообщение от Ressin Посмотреть сообщение
time(NULL)
возвращает текущее время, будем считать его случайным числом и используем для инициализации датчика случайных чисел:
C
1
srand(time(NULL));
Ну и чтобы компилятор не выдавал предупреждение о слегка разных типах параметра srand и возвращаемого значения time, приведем тип к unsigned:
C
1
srand((unsigned)time(NULL));
C++
1
srand(static_cast<unsigned>(time(NULL)));
1
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 64
13.02.2019, 07:19  [ТС]
Это все понятно про rand, что range_min - минимальное значение, а range_max - максимальное.
С srand более менее разобрались, вроде как понятно. А вот с rand не совсем.

Возьмем код:

C++
1
2
3
4
5
6
7
8
const unsigned int ARRSIZE = 100;
const int ABSLIMIT = 100;
 
rrand(point, -ABSLIMIT, ABSLIMIT, ARRSIZE - 1);
 
void rrand(Point *p, int range_min, int range_max, int count)
 
rand() % (range_max - range_min + 1) + range_min;
В таком случае, от скольки до скольки будет диапазон ?? Например, от -100 до 100 или от 0 до 99. Какой будет диапазон у генератора чисел rand.
0
Модератор
Эксперт С++
 Аватар для zss
13778 / 10971 / 6491
Регистрация: 18.12.2011
Сообщений: 29,258
13.02.2019, 08:09
Лучший ответ Сообщение было отмечено Ressin как решение

Решение

Цитата Сообщение от Ressin Посмотреть сообщение
rand() % (range_max - range_min + 1)
Дает остаток от деления на (range_max - range_min + 1)
т.е. минимум равен нулю,
максимум range_max - range_min
пирибавляем range_min

Получаем, что минимум равен range_min (для Вашего примера -100), максимум range_max (для Вашего примера +100)
1
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 64
13.02.2019, 08:54  [ТС]
Понять не могу.
Почему изначально минимум равен 0:

т.е. минимум равен нулю,

Добавлено через 14 минут
Я понял, разобрался.
Спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.02.2019, 08:54
Помогаю со студенческими работами здесь

srand(), rand() и их seed
Пишу класс, объекты которого представляют из себя трехмерные модели планет. Для того что бы разнообразить ландшафт использую алгоритм,...

rand() & srand()
кто знает как работает пара функции rand() и srand(). я знаю как это пара функци работает.мне всегда интересовало как это зделано .одно...

Различия srand() и rand()
Привет, форумчане! Изучаю с++шник, внезапно появился нездоровый интерес. Чем srand() отличается от rand()? Знаю, что srand() генерирует...

Что означают данные строки?
using stroka = basic_string&lt;char, char_traits&lt;char&gt;, allocator&lt;char&gt;&gt; stroka res; reverse_copy(cbegin(str), cend(str),...

Не могу понять ,что означают строки
#include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; #include...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Вот уже год прошел, как у меня домен в reg.ru ...
Etyuhibosecyu 16.04.2026
И ничего они мне не сделали. Если отвязать карту, никакие услуги они не навяжут. Я бы с радостью продлил еще на два года, чтобы не мучиться с временным доменом и меня уже знали по red-star-soft. com,. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru