rand_s
Génère un nombre pseudo-aléatoire compris.Une version de couche-point avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du CRT.
errno_t rand_s( unsigned int* randomValue);
Valeur de retour
Zéro si l'opération a réussi, sinon, le code d'erreur.si le pointeur d'entrée randomValue est un pointeur null, la fonction appelle un gestionnaire de paramètre non valide, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, la fonction retourne EINVAL et définit errno à EINVAL.Si la fonction échoue pour une autre raison, *randomValue a la valeur 0.
Notes
La fonction d' rand_s écrit un entier pseudo-aléatoire compris dans la plage 0 à UINT_MAX au pointeur d'entrée.La fonction d' rand_s utilise le système d'exploitation à générer chiffrement sécuriser des nombres aléatoires.Il n'utilise pas la valeur générée par la fonction de srand , et n'affecte la séquence de nombres aléatoires utilisée par rand.
La fonction d' rand_s requiert qu' _CRT_RAND_S fixe soit défini avant l'instruction d'inclusion pour que la fonction a été déclarée, comme dans l'exemple suivant :
#define _CRT_RAND_S
#include <stdlib.h>
rand_s dépend de l'API de RtlGenRandom , qui est uniquement disponible dans Windows XP et versions ultérieures.
Configuration requise
routine |
en-tête requis |
---|---|
rand_s |
<stdlib.h> |
Pour plus d'informations, consultez compatibilité.
Exemple
// crt_rand_s.c
// This program illustrates how to generate random
// integer or floating point numbers in a specified range.
// Remembering to define _CRT_RAND_S prior
// to inclusion statement.
#define _CRT_RAND_S
#include <stdlib.h>
#include <stdio.h>
#include <limits.h>
int main( void )
{
int i;
unsigned int number;
double max = 100.0;
errno_t err;
// Display 10 random integers in the range [ 1,10 ].
for( i = 0; i < 10;i++ )
{
err = rand_s( &number );
if (err != 0)
{
printf_s("The rand_s function failed!\n");
}
printf_s( " %u\n", (unsigned int) ((double)number /
((double) UINT_MAX + 1 ) * 10.0) + 1);
}
printf_s("\n");
// Display 10 random doubles in [0, max).
for (i = 0; i < 10;i++ )
{
err = rand_s( &number );
if (err != 0)
{
printf_s("The rand_s function failed!\n");
}
printf_s( " %g\n", (double) number /
((double) UINT_MAX + 1) * max );
}
}
Résultat de l'exemple
10
4
5
2
8
2
5
6
1
1
32.6617
29.4471
11.5413
6.41924
20.711
60.2878
61.0094
20.1222
80.9192
65.0712