rand_s

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Génère un nombre pseudo-aléatoire. Une version de rand avec des améliorations de sécurité comme décrit dans fonctionnalités de sécurité de la bibliothèque CRT.

errno_t rand_s(   unsigned int* randomValue);  

Zéro en cas de réussite, sinon, un 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 de paramètre. Si l'exécution est autorisée à continuer, cette fonction retourne EINVAL et définit à errno à EINVAL. Si la fonction échoue pour une raison quelconque, *randomValue est définie sur 0.

Le rand_s fonction écrit un entier pseudo-aléatoire comprise entre 0 et UINT_MAX au pointeur d’entrée. Le rand_s fonction utilise le système d’exploitation pour générer des nombres aléatoires sécurisés par chiffrement. Il n’utilise pas la valeur de départ générés par le srand (fonction), et n’affecte pas la séquence de nombres aléatoire utilisée par rand.

Le rand_s fonction requiert cette constante _CRT_RAND_S être définie avant l’instruction d’inclusion pour la fonction d’être déclarés, comme dans l’exemple suivant :

#define _CRT_RAND_S  
#include <stdlib.h>  

rand_sdépend de la RtlGenRandom API, qui est uniquement disponible dans Windows XP et versions ultérieures.

RoutineEn-tête requis
rand_s<stdlib.h>

Pour plus d'informations, voir Compatibilité.

// 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 );  
    }  
}  

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  

System::Random (classe)

Prise en charge de virgule flottante
srand

Afficher: