Man page - initstate(3)

Packages contains this manual

Available languages:

en fr pl ja ru ro de

Manual

random

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
АТРИБУТЫ
СТАНДАРТЫ
ИСТОРИЯ
ПРИМЕЧАНИЯ
CAVEATS
ОШИБКИ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

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

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).

Image grohtml-609539-1.png

СТАНДАРТЫ

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 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

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