Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

       random, srandom, initstate, setstate - генератор случайных чисел

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #include <stdlib.h>

       long random(void);
       void srandom(unsigned int seed);

       char *initstate(unsigned int seed, char state[.n], size_t n);
       char *setstate(char *state);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       random(), srandom(), initstate(), setstate():
           _XOPEN_SOURCE >= 500
               || /* glibc >= 2.19: */ _DEFAULT_SOURCE
               || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

ОПИСАНИЕ

       The  random()   function  uses  a nonlinear additive feedback random number generator employing a default
       table of size 31 long integers to return  successive  pseudo-random  numbers  in  the  range  from  0  to
       2^31 - 1.  The period of this random number generator is very large, approximately 16 * ((2^31) - 1).

       Функция   srandom()   устанавливает   свой  аргумент  в  качестве  семени  для  новой  последовательности
       псевдослучайных чисел, которые будут возвращаться функцией random(). Эти последовательности  повторяются,
       если  вызывать  srandom() с тем же значением семени. Если значение семени не указано, то функция random()
       автоматически устанавливает его равным 1.

       The initstate()  function allows a state array state to be initialized for use by random().  The size  of
       the state array n is used by initstate()  to decide how sophisticated a random number generator it should
       use—the  larger the state array, the better the random numbers will be.  Current "optimal" values for the
       size of the state array n are 8, 32, 64, 128, and 256 bytes; other amounts will be rounded  down  to  the
       nearest  known  amount.   Using  less  than  8  bytes  results  in  an  error.   seed is the seed for the
       initialization, which specifies a starting point  for  the  random  number  sequence,  and  provides  for
       restarting at the same point.

       Функция setstate() изменяет состояние массива состояния, используемого в random(). Массив состояния state
       используется  для  генерации  случайных  чисел  до следующего вызова initstate() или setstate(). Значение
       state должно быть инициализировано с помощью  функции  initstate()  или  результатом  предыдущего  вызова
       setstate().

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       The  random()   function  returns  a  value between 0 and (2^31) - 1.  The srandom()  function returns no
       value.

       The initstate()  function returns a pointer to the previous state array.  On failure,  it  returns  NULL,
       and errno is set to indicate the error.

       On  success, setstate()  returns a pointer to the previous state array.  On failure, it returns NULL, and
       errno is set to indicate the error.

ОШИБКИ

       EINVAL Аргумент state, указанный setstate(), равен NULL.

       EINVAL Функции initstate() передан массив состояния меньше 8 байт.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).
       ┌─────────────────────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ ИнтерфейсАтрибутЗначение │
       ├─────────────────────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │ random(), srandom(), initstate(), setstate()                        │ Безвредность в нитях │ MT-Safe  │
       └─────────────────────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

       POSIX.1-2008.

ИСТОРИЯ

       POSIX.1-2001, 4.3BSD.

ПРИМЕЧАНИЯ

       Генерация случайных чисел является сложной проблемой. В главе 7 (Random Numbers) Numerical Recipes in  C:
       The  Art  of  Scientific  Computing  (William  H. Press, Brian P. Flannery, Saul A. Teukolsky, William T.
       Vetterling; New York: Cambridge University  Press,  2007,  3rd  ed.)  приведено  великолепное  обсуждение
       проблем практического применения генерации случайных чисел.

       Также  вы  можете  обратиться  к  теоретическому  обсуждению, которое также объясняет многие практические
       проблемы, приведенному в главе 3 (Random Numbers) второго тома Искусства программирования Дональда  Кнута
       (The  Art  of Computer Programming, volume 2 (Seminumerical Algorithms), 2nd ed.; Reading, Massachusetts:
       Addison-Wesley Publishing Company, 1981).

CAVEATS

       Функция random() не должна использоваться в многонитевых программах, где требуется повторение  поведения.
       Для этих целей используйте random_r(3).

ОШИБКИ

       Согласно  POSIX,  initstate()  должна возвращать NULL при ошибке. Реализация glibc в errno записывает код
       ошибки (как по стандарту), но не возвращает NULL.

СМОТРИТЕ ТАКЖЕ

       getrandom(2), drand48(3), rand(3), random_r(3), srand(3)

ПЕРЕВОД

       Русский перевод этой страницы руководства  разработал(и)  aereiae  <aereiae@gmail.com>,  Azamat  Hackimov
       <azamat.hackimov@gmail.com>,     Dmitriy     S.     Seregin     <dseregin@59.ru>,     Katrin     Kutepova
       <blackkatelv@gmail.com>,  Lockal  <lockalsash@gmail.com>,  Yuri  Kozlov   <yuray@komyakino.ru>,   Баринов
       Владимир, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику(ам)  по  его(их)  адресу(ам)  электронной  почты  или  по   адресу   списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                        random(3)