Man page - rand(3)

Packages contains this manual

Available languages:

en fr pl ja ro de

Manual

rand

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ATTRIBUTS
VERSIONS
STANDARDS
HISTORIQUE
EXEMPLES
VOIR AUSSI
TRADUCTION

NOM

rand, rand_r, srand - Générateur de nombres pseudoaléatoires

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <stdlib.h>

int rand(void);
void srand(unsigned int
graine );

[[deprecated]] int rand_r(unsigned int * seedp );

Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros (7)) :

rand_r () :
Depuis la glibc 2.24 :
_POSIX_C_SOURCE >= 199506L
glibc 2.23 et antérieures
_POSIX_C_SOURCE

DESCRIPTION

La fonction rand () renvoie un entier pseudoalĂ©atoire entre 0 et RAND_MAX , bornes incluses (c’est-Ă -dire dans l’intervalle mathĂ©matique [0, RAND_MAX ]).

La fonction srand () utilise son argument comme « graine\[u00BB] pour la gĂ©nĂ©ration d’une nouvelle sĂ©quence de nombres pseudoalĂ©atoires qui seront fournis par rand (). Ces sĂ©quences sont reproductibles en appelant srand () avec la mĂȘme valeur de graine.

Si aucune graine originale n’est fournie, la fonction rand () commence en utilisant la valeur 1 .

La fonction rand () n’est pas rĂ©entrante, car elle utilise un Ă©tat cachĂ© modifiĂ© Ă  chaque appel. Il peut s’agir simplement de la valeur de graine alĂ©atoire pour l’appel suivant ou de quelque chose de plus compliquĂ©. Afin d’obtenir un comportement reproductible dans une application threadĂ©e, cet Ă©tat doit ĂȘtre explicite ; cela peut ĂȘtre fait en utilisant la fonction rĂ©entrante rand_r ().

Comme rand (), rand_r () renvoie un entier pseudoalĂ©atoire dans l’intervalle [0, RAND_MAX ]. L’argument seedp est un pointeur vers un unsigned int qui est utilisĂ© pour stocker l’état entre des appels successifs. Si la fonction rand_r () est appelĂ©e avec la mĂȘme valeur initiale pour l’entier pointĂ© par seedp , et que cette valeur n’est pas modifiĂ©e entre les appels, alors la mĂȘme sĂ©quence pseudoalĂ©atoire sera gĂ©nĂ©rĂ©e.

La valeur pointĂ©e par l’argument seedp de rand_r () ne fournit qu’une donnĂ©e trĂšs petite pour stocker la valeur d’état, cette fonction sera donc un gĂ©nĂ©rateur pseudoalĂ©atoire faible. Essayez donc drand48_r (3) Ă  sa place.

VALEUR RENVOYÉE

Les fonctions rand () et rand_r () renvoient un nombre entier entre 0 et RAND_MAX , bornes incluses. La fonction srand () ne renvoie aucune valeur.

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3895939-1.png

VERSIONS

Les versions de rand () et srand () de la bibliothĂšque C de Linux utilisent le mĂȘme gĂ©nĂ©rateur de nombres alĂ©atoires que random (3) et srandom (3), ainsi les bits de poids faible sont tout aussi imprĂ©visibles que les bits de poids fort. Ceci n’est pas le cas avec les anciennes implĂ©mentations de rand () ou d’actuelles implĂ©mentations sur des systĂšmes diffĂ©rents, oĂč les bits de poids faible n’étaient pas « aussi alĂ©atoires » que ceux de poids fort. N’utilisez pas cette fonction dans des applications conçues pour ĂȘtre portables et lorsqu’un bon caractĂšre alĂ©atoire est nĂ©cessaire. (Utilisez plutĂŽt random (3))

STANDARDS

rand_ ()
srand
()

C11, POSIX.1-2008.

rand_r ()

POSIX.1-2008.

HISTORIQUE

rand_ ()
srand
()

SVr4, 4.3BSD, C89, POSIX.1-2001.

rand_r ()

POSIX.1-2001. ObsolĂšte dans POSIX.1-2008.

EXEMPLES

POSIX.1-2001 fournit l’exemple suivant d’une implĂ©mentation de rand () et srand () potentiellement utile lorsqu’on a besoin de la mĂȘme sĂ©quence sur deux machines diffĂ©rentes.

static unsigned long next = 1;
/* RAND_MAX supposĂ© ĂȘtre Ă©gal Ă  32767 */
int mon_rand(void) {
suivant = suivant * 1103515245 + 12345;
return((unsigned)(suivant/65536) % 32768);
}
void mon_srand(unsigned int graine) {
suivant = graine;
}

Le programme suivant peut ĂȘtre utilisĂ© pour afficher la sĂ©quence pseudoalĂ©atoire produite par rand () avec une graine donnĂ©e. Quand la graine est -1 , le programme utilise une graine alĂ©atoire.

#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char *argv[])
{
int r;
unsigned int graine, nloops;
if (argc != 3) {
fprintf(stderr, "Utilisation : %s <graine> <nloops>\n", argv[0]);
exit(EXIT_FAILURE);
}
seed = atoi(argv[1]);
nloops = atoi(argv[2]);
if (seed == -1) {
seed = arc4random();
printf("graine : %u\n", graine);
}
srand(graine);
for (unsigned int j = 0; j < nloops; j++) {
r = rand();
printf("%d\n", r);
}
exit(EXIT_SUCCESS);
}

VOIR AUSSI

drand48 (3), random (3)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et bubu <bubub@no-log.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .