.\" -*- 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 <nick@debian.org>
.\"          with contribution from Francesco Potorti <F.Potorti@cnuce.cnr.it>
.\" 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 "15 czerwca 2024 r." "Linux man\-pages 6.9.1" 
.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 <stdlib.h>\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 <stdio.h>
#include <stdlib.h>
\&
int
main(int argc, char *argv[])
{
    int           r;
    unsigned int  seed, nloops;
\&
    if (argc != 3) {
        fprintf(stderr, "Użycie: %s <ziarno> <n\-pętli>\[rs]n", argv[0]);
        exit(EXIT_FAILURE);
    }
\&
    seed = atoi(argv[1]);
    nloops = atoi(argv[2]);
\&
    if (seed == \-1) {
        seed = arc4random();
        printf("ziarno: %u\[rs]n", seed);
    }
\&
    srand(seed);
    for (unsigned int j = 0; j < nloops; j++) {
        r =  rand();
        printf("%d\[rs]n", r);
    }
\&
    exit(EXIT_SUCCESS);
}
.EE
.\" SRC END
.in
.SH "ZOBACZ TAKŻE"
\fBdrand48\fP(3), \fBrandom\fP(3)
.PP
.SH TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika:
Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>
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 .
