Учись программированию на C++ Builder бесплатно!

Функция rand возвращает целые псевдослучайные числа, равномерно распределенные в диапазоне от 0 до RAND_MAX (0x7FFFU - 32767). Длина отрезка апериодичности псевдослучайных чисел 232 = 4 294 96 7 296. Число используемых случайных чисел не должно превышать эту величину. Если все-таки требуется больше чисел, то необходимо при приближении к границе отрезка апериодичности (а лучше задолго до нее) обновить последовательность чисел с помощью функций randomize или srand.

Если желательно генерировать случайные числа, лежащие в диапазоне от 0 до некоторого значение N, то это легко делать операцией вычисления остатка %. Например, выражение:

rand()%101;

возвращает числа в диапазоне от 0 до 100, а выражение:

(randl()%201) - 100;

возвращает числа в диапазоне от -100 до 100.

Функцию rand можно использовать и для генерации действительных случайных чисел. Например, выражение:

10 * rand() / RAND_МАХ;

генерирует псевдослучайные действительные числа, распределенные в диапазоне от 0 до 10.

Функция _lrand работает аналогично функции rand, но имеет отрезок апериодичности 264 и диапазон от 0 до 231 - 1.

Функция random отличается от предыдущих тем, что имеет параметр num, определяющий верхнюю границу диапазона генерируемых чисел. Поэтому, если надо, например, генерировать числа в диапазоне от 0 до 100, это можно сделать выражением:

random(101);

не прибегая, как для предыдущих функций, к операции %.

Функция RandG генерирует квазислучайные действительные числа, распределенные но нормальному закону (закону Гаусса) с математическим ожиданием Mean и средним квадратичным отклонением StdDev. При работе с этой функцией надо иметь в виду, что файл Math.hpp в C++Builder автоматически не подключается к модулю приложения. Поэтому в модуль необходимо вручную вводить директиву:

#include <Math.hpp>

Поскольку генерируемые рассматриваемыми функциями числа являются псевдослучайными, то при каждом новом запуске приложения будет вырабатываться одна и та же последовательность чисел. Если это недопустимо, надо рандомизировать генератор чисел, т.е. задавать ему каждый раз новое случайное исходное число. Рандомизацию всех генераторе», кроме RandG, осуществляет функция randomize. Достаточно вставить где-то в текст программы (например, в событие OnCreate формы) оператор:

randomize();

чтобы при каждом запуске приложения генерировалась новая последовательность чисел.

Функция srand отличается от randomize тем, что задает в качестве начального не случайное число, а значение своего параметра seed.

Рандомизацию генератора RandG осуществляет функция Randomize, аналогичная randomize. Задание конкретного начального числа для этого генератора можно осуществить, задавая значение целой переменной RandSeed, определенной в файле System.hpp.

Функция Синтаксис / Описание Файл
_lrand long _lrand(void)
Псевдослучайное целое, диапазон от 0 до 231 - 1
stdlib.h
rand int rand(void)
Псевдослучайное целое, диапазон от 0 до RAND_MAX
stdlib.h
RandG Extended RandG(Extended Mean, Extended StdDev)
Псевдослучайные числа, распределенные по нормальному закону
Mean - математическое ожидание
StdDev - среднее квадратичное отклонение
Math.hpp
random int random(int num)
Псевдослучайное целое, диапазон от 0 до num - 1
stdlib.h
randomize void randomize(void)
Рандомизация генераторов (кроме RandG) случайной величиной
stdlib.h
Randomize void Randomize(void)
Рандомизация RandG случайной величиной
Math.hpp
srand void srand(unsigncd seed)
Рандомизация генераторов (кроме RandG) числом seed
stdlib.h