Partager via


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

Équivalent .NET Framework

System : : classe aléatoire

Voir aussi

Référence

Support à virgule flottante

srand