.\" -*- coding: UTF-8 -*- .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" 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 "1 listopada 2020 r." GNU "Podręcznik programisty Linuksa" .SH NAZWA random, srandom, initstate, setstate \- generator liczb losowych .SH SKŁADNIA .nf \fB#include \fP .PP \fBlong random(void);\fP .PP \fBvoid srandom(unsigned \fP\fIseed\fP\fB);\fP .PP \fBchar *initstate(unsigned \fP\fIseed\fP\fB, char *\fP\fIstate\fP\fB, size_t \fP\fIn\fP\fB);\fP .PP \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 .ad l \fBrandom\fP(), \fBsrandom\fP(), \fBinitstate\fP(), \fBsetstate\fP(): .RS 4 .\" || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED _XOPEN_SOURCE\ >=\ 500 || /* Glibc od 2.19: */ _DEFAULT_SOURCE || /* Glibc w wersji <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE .RE .ad .SH OPIS 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^31\ \-\ 1. The period of this random number generator is very large, approximately \fI16\ *\ ((2^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 "optymalnymi" 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" The \fBrandom\fP() function returns a value between 0 and \fI(2^31)\ \-\ 1\fP. The \fBsrandom\fP() function returns no value. .PP Funkcja \fBinitstate\fP() zwraca wskaźnik do poprzedniej tablicy stanów. W przypadku błędu ustawiane jest \fIerrno\fP, wskazując na przyczynę błędu. .PP Jeśli zakończy się pomyślnie, funkcja \fBsetstate\fP() zwraca wskaźnik do poprzedniej tablicy stanów. W przypadku błędu zwraca NULL i ustawia \fIerrno\fP, wskazując na przyczynę błędu. .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; lbw23 lb lb l l l. Interfejs Atrybut Wartość T{ \fBrandom\fP(), \fBsrandom\fP(), .br \fBinitstate\fP(), \fBsetstate\fP() T} Bezpieczeństwo wątkowe MT\-Safe .TE .SH "ZGODNE Z" 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. "\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, wydanie 3.) w rozdziale 7 ("Random Numbers") 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. ("Random Numbers") drugiego tomu ("Seminumerical Algorithms") książki Donalda E.\& Knutha "\fIThe Art of Computer Programming\fP"; wydanie drugie; Reading, Massachusetts: Addison\-Wesley Publishing Company, 1981. .SH BŁĘDY .\" 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) .SH "O STRONIE" Angielska wersja tej strony pochodzi z wydania 5.10 projektu Linux \fIman\-pages\fP. Opis projektu, informacje dotyczące zgłaszania błędów oraz najnowszą wersję oryginału można znaleźć pod adresem \%https://www.kernel.org/doc/man\-pages/. .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: 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 .