.\" -*- 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 1993-03-29, David Metcalfe .\" Modified 1993-04-28, Lars Wirzenius .\" Modified 1993-07-24, Rik Faith (faith@cs.unc.edu) .\" Modified 1995-05-18, Rik Faith (faith@cs.unc.edu) to add .\" better discussion of problems with rand on other systems. .\" (Thanks to Esa Hyyti{ (ehyytia@snakemail.hut.fi).) .\" Modified 1998-04-10, Nicolás Lichtmaier .\" with contribution from Francesco Potorti .\" Modified 2003-11-15, aeb, added rand_r .\" 2010-09-13, mtk, added example program .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH rand 3 "2 maja 2024 r." "Linux man\-pages 6.8" .SH NAZWA rand, rand_r, srand \- generator liczb pseudolosowych .SH BIBLIOTEKA Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP) .SH SKŁADNIA .nf \fB#include \fP .P \fBint rand(void);\fP \fBvoid srand(unsigned int \fP\fIseed\fP\fB);\fP .P \fB[[przestarzałe]] int rand_r(unsigned int *\fP\fIseedp\fP\fB);\fP .fi .P .RS -4 Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)): .RE .P \fBrand_r\fP(): .nf Od glibc 2.24: _POSIX_C_SOURCE >= 199506L glibc 2.23 i wcześniejsze _POSIX_C_SOURCE .fi .SH OPIS Funkcja \fBrand\fP() zwraca pseudolosową liczbę całkowitą z zakresu pomiędzy 0 a \fBRAND_MAX\fP włącznie (tj. matematyczny przedział [0,\ \fBRAND_MAX\fP]). .P Funkcja \fBsrand\fP() ustawia swój argument jako wartość początkową dla nowego ciągu pseudolosowych liczb całkowitych zwracanych przez \fBrand\fP(). Ciągi te są powtarzalne poprzez wywołanie \fBsrand\fP() z tą samą wartością początkową. .P Jeśli nie podano wartości początkowej, funkcja \fBrand\fP() automatycznie ustawia tę wartość na 1. .P Funkcja \fBrand\fP() nie jest wielobieżna, ponieważ używa ukrytego stanu, który jest modyfikowany przy każdym wywołaniu. Może to być jedynie wartość ziarna, do wykorzystania przy następnym wywołaniu albo coś bardziej złożonego. Aby uzyskać odtwarzalne zachowanie w aplikacji z wątkami, stan ten musi być jawny; można to uzyskać za pomocą funkcji wielobieżnej \fBrand_r\fP(). .P Podobnie jak \fBrand\fP(), \fBrand_r\fP() zwraca pseudolosową liczbę całkowitą z zakresu [0,\ \fBRAND_MAX\fP]. Argument \fIseedp\fP jest wskaźnikiem do \fIunsigned int\fP, która jest używana do przechowywania stanu pomiędzy wywołaniami. Jeśli \fBrand_r\fP() wywoła się z tą samą wartością początkową jak liczba wskazywana przez \fIseedp\fP, a wartość ta nie zostanie zmodyfikowana pomiędzy wywołaniami, to uzyska się tę samą sekwencję pseudolosową. .P Wartość, na którą wskazuje argument \fIseedp\fP funkcji \fBrand_r\fP() zapewnia jedynie bardzo ograniczoną liczbę stanów, więc opisywana funkcja będzie bardzo słabym generatorem pseudolosowym. Można korzystać z zamiennika w postaci \fBdrand48_r\fP(3). .SH "WARTOŚĆ ZWRACANA" Funkcje \fBrand\fP() i \fBrand_r\fP() zwracają wartość z zakresu pomiędzy 0 a \fBRAND_MAX\fP (włącznie). Funkcja \fBsrand\fP() nie zwraca żadnej wartości. .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 \fBrand\fP(), \fBrand_r\fP(), \fBsrand\fP() T} Bezpieczeństwo wątkowe MT\-bezpieczne .TE .SH WERSJE Wersje \fBrand\fP() i \fBsrand\fP() w bibliotece C Linuksa korzystają z tego samego generatora liczb losowych, co \fBrandom\fP() i \fBsrandom\fP(), więc mniej znaczące bity powinny być tak samo losowe jak bity bardziej znaczące. Jednakże, w starszych implementacjach \fBrand\fP() i aktualnych implementacjach na różnych systemach, bity mniej znaczące są znacznie mniej losowe niż bity bardziej znaczące. Nie należy korzystać z tej funkcji w aplikacjach, które mają być przenośne, gdy potrzebna jest dobra losowość (proszę używać w zamian \fBrandom\fP(3)). .SH STANDARDY .TP \fBrand\fP() .TQ \fBsrand\fP() C11, POSIX.1\-2008. .TP \fBrand_r\fP() POSIX.1\-2008. .SH HISTORIA .TP \fBrand\fP() .TQ \fBsrand\fP() SVr4, 4.3BSD, C89, POSIX.1\-2001. .TP \fBrand_r\fP() POSIX.1\-2001. Przestarzałe w POSIX.1\-2008. .SH PRZYKŁADY POSIX.1\-2001 daje następujący przykład implementacji \fBrand\fP() i \fBsrand\fP(), który może być przydatny, gdy potrzeba jest taka sama sekwencja na dwóch różnych komputerach. .P .in +4n .EX static unsigned long next = 1; \& /* RAND_MAX zakłada się jako 32767 */ int myrand(void) { next = next * 1103515245 + 12345; return((unsigned)(next/65536) % 32768); } \& void mysrand(unsigned int seed) { next = seed; } .EE .in .P Poniższy program może być zastosowany do wyświetlenia sekwencji pseudolosowej utworzonej przez \fBrand\fP() , gdy zada się jej określone ziarno. Gdy ziarno wynosi \fI\-1\fP, program używa losowego ziarna. .P .in +4n .\" SRC BEGIN (rand.c) .EX #include #include \& int main(int argc, char *argv[]) { int r; unsigned int seed, nloops; \& if (argc != 3) { fprintf(stderr, "Użycie: %s \en", argv[0]); exit(EXIT_FAILURE); } \& seed = atoi(argv[1]); nloops = atoi(argv[2]); \& if (seed == \-1) { seed = arc4random(); printf("ziarno: %u\en", seed); } \& srand(seed); for (unsigned int j = 0; j < nloops; j++) { r = rand(); printf("%d\en", r); } \& exit(EXIT_SUCCESS); } .EE .\" SRC END .in .SH "ZOBACZ TAKŻE" \fBdrand48\fP(3), \fBrandom\fP(3) .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Andrzej Krzysztofowicz 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 .