.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" References consulted: .\" Linux libc source code .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" Modified Sun Mar 28 00:25:51 1993, David Metcalfe .\" Modified Sat Jul 24 18:13:39 1993 by Rik Faith (faith@cs.unc.edu) .\" Modified Sun Aug 20 21:47:07 2000, aeb .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH random 3 "2 мая 2024 г." "Справочные страницы Linux 6.9.1" .SH ИМЯ random, srandom, initstate, setstate \- генератор случайных чисел .SH БИБЛИОТЕКА Стандартная библиотека языка C (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \fBlong random(void);\fP \fBvoid srandom(unsigned int \fP\fIseed\fP\fB);\fP .P \fBchar *initstate(unsigned int \fP\fIseed\fP\fB, char \fP\fIstate\fP\fB[.\fP\fIn\fP\fB], size_t \fP\fIn\fP\fB);\fP \fBchar *setstate(char *\fP\fIstate\fP\fB);\fP .fi .P .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .P \fBrandom\fP(), \fBsrandom\fP(), \fBinitstate\fP(), \fBsetstate\fP(): .nf .\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED _XOPEN_SOURCE >= 500 || /* glibc >= 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE .fi .SH ОПИСАНИЕ The \fBrandom\fP() 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\[ha]31\ \-\ 1. The period of this random number generator is very large, approximately \fI16\ *\ ((2\[ha]31)\ \-\ 1)\fP. .P Функция \fBsrandom\fP() устанавливает свой аргумент в качестве семени для новой последовательности псевдослучайных чисел, которые будут возвращаться функцией \fBrandom\fP(). Эти последовательности повторяются, если вызывать \fBsrandom\fP() с тем же значением семени. Если значение семени не указано, то функция \fBrandom\fP() автоматически устанавливает его равным 1. .P The \fBinitstate\fP() function allows a state array \fIstate\fP to be initialized for use by \fBrandom\fP(). The size of the state array \fIn\fP is used by \fBinitstate\fP() to decide how sophisticated a random number generator it should use\[em]the larger the state array, the better the random numbers will be. Current "optimal" values for the size of the state array \fIn\fP 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. \fIseed\fP is the seed for the initialization, which specifies a starting point for the random number sequence, and provides for restarting at the same point. .P Функция \fBsetstate\fP() изменяет состояние массива состояния, используемого в \fBrandom\fP(). Массив состояния \fIstate\fP используется для генерации случайных чисел до следующего вызова \fBinitstate\fP() или \fBsetstate\fP(). Значение \fIstate\fP должно быть инициализировано с помощью функции \fBinitstate\fP() или результатом предыдущего вызова \fBsetstate\fP(). .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" The \fBrandom\fP() function returns a value between 0 and \fI(2\[ha]31)\ \-\ 1\fP. The \fBsrandom\fP() function returns no value. .P The \fBinitstate\fP() function returns a pointer to the previous state array. On failure, it returns NULL, and \fIerrno\fP is set to indicate the error. .P On success, \fBsetstate\fP() returns a pointer to the previous state array. On failure, it returns NULL, and \fIerrno\fP is set to indicate the error. .SH ОШИБКИ .TP \fBEINVAL\fP Аргумент \fIstate\fP, указанный \fBsetstate\fP(), равен NULL. .TP \fBEINVAL\fP Функции \fBinitstate\fP() передан массив состояния меньше 8 байт. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBrandom\fP(), \fBsrandom\fP(), \fBinitstate\fP(), \fBsetstate\fP() T} Безвредность в нитях MT\-Safe .TE .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001, 4.3BSD. .SH ПРИМЕЧАНИЯ Генерация случайных чисел является сложной проблемой. В главе 7 (Random Numbers) \fINumerical Recipes in C: The Art of Scientific Computing\fP (William H.\& Press, Brian P.\& Flannery, Saul A.\& Teukolsky, William T.\& Vetterling; New York: Cambridge University Press, 2007, 3rd ed.) приведено великолепное обсуждение проблем практического применения генерации случайных чисел. .P Также вы можете обратиться к теоретическому обсуждению, которое также объясняет многие практические проблемы, приведенному в главе 3 (Random Numbers) второго тома \fIИскусства программирования\fP Дональда Кнута (The Art of Computer Programming, volume 2 (Seminumerical Algorithms), 2nd ed.; Reading, Massachusetts: Addison\-Wesley Publishing Company, 1981). .SH CAVEATS Функция \fBrandom\fP() не должна использоваться в многонитевых программах, где требуется повторение поведения. Для этих целей используйте \fBrandom_r\fP(3). .SH ОШИБКИ .\" http://sourceware.org/bugzilla/show_bug.cgi?id=15380 Согласно POSIX, \fBinitstate\fP() должна возвращать NULL при ошибке. Реализация glibc в \fIerrno\fP записывает код ошибки (как по стандарту), но не возвращает NULL. .SH "СМОТРИТЕ ТАКЖЕ" \fBgetrandom\fP(2), \fBdrand48\fP(3), \fBrand\fP(3), \fBrandom_r\fP(3), \fBsrand\fP(3) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал(и) aereiae , Azamat Hackimov , Dmitriy S. Seregin , Katrin Kutepova , Lockal , Yuri Kozlov , Баринов Владимир и Иван Павлов . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .