.\" -*- 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 "10 lutego 2023 r." "Linux man\-pages 6.03" 
.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 <stdlib.h>\fP
.PP
\fBlong random(void);\fP
\fBvoid srandom(unsigned int \fP\fIseed\fP\fB);\fP
.PP
\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
.PP
.RS -4
Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)):
.RE
.PP
\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.
.PP
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.
.PP
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.
.PP
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.
.PP
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.
.PP
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).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interfejs	Atrybut	Wartość
T{
\fBrandom\fP(),
\fBsrandom\fP(),
\fBinitstate\fP(),
\fBsetstate\fP()
T}	Bezpieczeństwo wątkowe	MT\-bezpieczne
.TE
.hy
.ad
.sp 1
.SH STANDARDY
POSIX.1\-2001, POSIX.1\-2008, 4.3BSD.
.SH UWAGI
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).
.PP
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.
.PP
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 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
Autorami polskiego tłumaczenia niniejszej strony podręcznika są:
Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>,
Robert Luberda <robert@debian.org>
i
Michał Kułach <michal.kulach@gmail.com>
.
.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 .
