Учись программированию на 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

Поиск по сайту