.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993, David Metcalfe .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH random 3 "8 lutego 2026 r." "Linux man\-pages 6.18" .SH NAZWA random, srandom, initstate, setstate \- generator liczb losowych .SH BIBLIOTEKA Standardowa biblioteka C (\fIlibc\fP,\ \fI\-lc\fP) .SH SKŁADNIA .nf \fB#include \fP .P \fBlong random(void);\fP \fBvoid srandom(unsigned int \fP\fIseed\fP\fB);\fP .P \fBchar *initstate(\fPsize_t n; \fB 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 Wymagane ustawienia makr biblioteki glibc (patrz \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 OPIS Funkcja \fBrandom\fP() korzysta z generatora liczb losowych opartego na nieliniowych addytywnych przesunięciach, stosującego domyślną tablicę o rozmiarze 31 długich liczb całkowitych do zwracania kolejnych liczb pseudolosowych z zakresu pomiędzy 0 a 2\[ha]31\ \-\ 1. Okres tego generatora liczb losowych jest bardzo duży, wynosi około \fI16\ *\ ((2\[ha]31)\ \-\ 1)\fP. .P Funkcja \fBsrandom\fP() ustawia swój argument jako wartość początkową dla nowego ciągu pseudolosowych liczb całkowitych zwracanych przez \fBrandom\fP(). Ciągi te są powtarzalne przez wywołanie \fBsrandom\fP() z tą samą wartością początkową. Jeśli nie podano wartości początkowej, funkcja \fBrandom\fP() automatycznie ustawia tę wartość na 1. .P Funkcja \fBinitstate\fP() pozwala na inicjację tablicy stanów \fIstate\fP w celu wykorzystania jej przez \fBrandom\fP(). \fBinitstate\fP() wykorzystuje rozmiar tablicy stanów \fIn\fP do podjęcia decyzji o tym, jakiego wymyślnego generatora liczb losowych powinna używać \[em] im większa tablica stanów, tym lepszy będzie generator liczb losowych. Obecnie \[Bq]optymalnymi\[rq] wartościami rozmiaru \fIn\fP tablicy stanów są: 8, 32, 64, 128 i 256 bajtów; inne wartości zostaną zaokrąglone w dół do najbliższej z wymienionych wartości. \fIseed\fP jest wartością początkową dla inicjacji, która określa punkt startu ciągu generatora liczb losowych oaz zapewnia restart w tym samym punkcie. .P Funkcja \fBsetstate\fP() zmienia tablicę stanów wykorzystywaną przez funkcję \fBrandom\fP(). Tablica stanu \fIstate\fP jest używana do generacji liczb losowych aż do następnego wywołania \fBinitstate\fP() lub \fBsetstate\fP(). \fIstate\fP musi być uprzednio zainicjowana za pomocą \fBinitstate\fP() lub być wynikiem wcześniejszego wywołania \fBsetstate\fP(). .SH "WARTOŚĆ ZWRACANA" Funkcja \fBrandom\fP() zwraca wartości pomiędzy 0 a \fI(2\[ha]31)\ \-\ 1\fP. Funkcja \fBsrandom\fP() nie zwraca żadnej wartości. .P Funkcja \fBinitstate\fP() zwraca wskaźnik do poprzedniej tablicy stanów. W przypadku błędu zwraca NULL i ustawia \fIerrno\fP, wskazując błąd. .P Jeśli zakończy się pomyślnie, funkcja \fBsetstate\fP() zwraca wskaźnik do poprzedniej tablicy stanów. W przypadku niepowodzenia zwraca NULL i ustawia \fIerrno\fP, wskazując błąd. .SH BŁĘDY .TP \fBEINVAL\fP Argument \fIstate\fP przekazany do \fBsetstate\fP() był równy NULL. .TP \fBEINVAL\fP Podano mniejszą niż 8\-bajtową tablicę stanów dla \fBinitstate\fP(). .SH ATRYBUTY Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfejs Atrybut Wartość T{ .na .nh \fBrandom\fP(), \fBsrandom\fP(), \fBinitstate\fP(), \fBsetstate\fP() T} Bezpieczeństwo wątkowe MT\-bezpieczne .TE .SH STANDARDY POSIX.1\-2008. .SH HISTORIA POSIX.1\-2001, 4.3BSD. .SH UWAGI Generowanie liczb pseudolosowych jest złożonym tematem. \[Bq]\fINumerical Recipes in C: The Art of Scientific Computing\fP\[rq] (William H.\& Press, Brian P.\& Flannery, Saul A.\& Teukolsky, William T.\& Vetterling; New York: Cambridge University Press, 2007, wydanie 3.) w rozdziale 7 (\[Bq]Random Numbers\[rq]) zawiera wybitną dyskusję o praktycznych problemach generowania liczb pseudolosowych. .P Bardziej teoretyczną dyskusję, także zawierającą szczegółowy opis wielu praktycznych problemów można znaleźć w rozdziale 3. (\[Bq]Random Numbers\[rq] \[em] \[Bq]Liczby losowe\[rq]) drugiego tomu (\[Bq]Seminumerical Algorithms\[rq] \[em] \[Bq]Algorytmy seminumeryczne\[rq]) książki Donalda E.\& Knutha \[Bq]\fIThe Art of Computer Programming\fP\[rq]; wydanie drugie; Reading, Massachusetts: Addison\-Wesley Publishing Company, 1981 (tytuł polski: \[Bq]Sztuka programowania\[rq]). .SH ZASTRZEŻENIA Funkcja \fBrandom\fP() nie powinna być używana w programach wielowątkowych, gdy wymagane jest, by jej zachowanie było powtarzalne. Do tego celu należy użyć \fBrandom_r\fP(3). .SH USTERKI .\" http://sourceware.org/bugzilla/show_bug.cgi?id=15380 Zgodnie z POSIX funkcja \fBinitstate\fP() powinna zwrócić NULL w przypadku błędu. W implementacji glibc w razie błędu ustawiane jest \fIerrno\fP (jak określono w POSIX), ale funkcja nie zwraca NULL. .SH "ZOBACZ TAKŻE" \fBgetrandom\fP(2), \fBdrand48\fP(3), \fBrand\fP(3), \fBrandom_r\fP(3), \fBsrand\fP(3) .PP .SH TŁUMACZENIE Tłumaczenie niniejszej strony podręcznika: Andrzej Krzysztofowicz , Robert Luberda i Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .