Программирование PC Генерация случайного числа в нужном диапазоне (применение rand) Sat, December 21 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Генерация случайного числа в нужном диапазоне (применение rand) Печать
Добавил(а) microsin   

В ANSI-C есть две функции, имеющие отношение к генерации псевдослучайной последовательности чисел (обычно нужно для их использования указать #include < stdlib.h >).

void srand (int seed);
int rand (int seed);

Функция srand нужна для инициализации псевдослучайного генератора начальным значением seed. Собственно генерирует псевдослучайное число только функция rand. Если в качестве параметра указано число, не равное 0, то происходит инициализация генератора псевдослучайных чисел. Если вызвать rand без параметров или с параметром, равным ноль, то rand вернет очередное псевдослучайное число.

Функция rand возвращает псевдослучайное число в диапазоне +0..+32767, что не всегда удобно. Для получения случайного числа в нужном диапазоне используют операцию взятия по модулю (остаток от деления) для результата rand. Вот пример функции, возвращающей число от minval до maxval включительно (функция простейшая, без проверки входных параметров, которые при некорректных величинах min и max могут вызвать ошибку деления на ноль):

u32 iRand (u32 minval, u32 maxval)
/* Генерация числа между minsize..maxsize */
{
   u32 temp16;
   u32 divider, module, quotient;
 
   divider = (maxval - minval) +1;
   temp16 = (u32)rand();
   quotient = temp16 / divider;
   module = temp16 - divider * quotient;
   return (module + minval);
}

Пример функции, возвращающей псевдослучайное значение true или false:

boolean randBool ()
{
   return (((u32)rand()& 0x0001)?true:false);
}

А вот так генерится число от 0 до n-1:

rand()%n;
 

Добавить комментарий


Защитный код
Обновить

Top of Page