Главная arrow Программирование arrow PC arrow Генерация случайного числа в нужном диапазоне (применение rand) Sunday, October 22 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
map.gif карта сайта
нашли опечатку?

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

Поделиться:

Генерация случайного числа в нужном диапазоне (применение rand) Версия для печати
Написал microsin   
19.08.2007

В 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)
/* gen number between 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);
}
       
Такой вызов присвоит val число от 1 до 10 включительно:
uint val = iRand (1, 10);
 
Пример функции, возвращающей псевдослучайное значение true или false:
boolean randBool ()
{
 return (((u32)rand()& 0x0001)?true:false);
}

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

Последнее обновление ( 20.03.2011 )
 

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

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

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

< Пред.   След. >

Top of Page
 
microsin © 2017