C++/cstdlib/rand

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

std::rand() — функция для генерации псевдослучайных чисел на основе базы.

Синтаксис

int rand(void);

Возвращаемое значение

Возвращает псевдослучайное целое число в диапазоне от 0 до RAND_MAX. RAND_MAX — это константа, определенная в «cstdlib».

База/семя

Функция rand() генерирует числа на основе базы. Если базу не менять, последовательность псевдослучайных чисел будет одна и та же. Для установки базы генератора псевдослучайных чисел служит функция srand(). Её аргумент — и есть значение базы. Сочетание srand(time(NULL)) устанавливает в качестве базы текущее время. Этот прием часто используется для того, чтобы при разных запусках генератора псевдослучайных чисел была всякий раз разная база и, соответственно, разный ряд получаемых значений. Для использования функции time() необходимо подключить заголовочный файл «time.h».

Примеры

#include <stdio.h> /* NULL */
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */

int random(int min, int max) {
   static bool first = true;
   if (first) {  
      srand(time(NULL)); // seeding for the first time only!
      first = false;
   }
   return min + rand() % (( max + 1 ) - min);
}
int main() {
  int iSecret = random(16, 128);
  return 0;
}