Exporter (0) Imprimer
Développer tout
and
div
eof
not
or
xor
Développer Réduire
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

rand_s

Génère un nombre pseudo-aléatoire. Il s'agit de versions de rand avec des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le CRT.

errno_t rand_s(   unsigned int* randomValue);

Zéro dans le cas d'une opération réussie, sinon affiche un code d'erreur. Si le paramètre d'entrée randomValue est un pointeur null ou si la fonction appelle un gestionnaire de paramètre non valides, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, la fonction retourne EINVAL et définit errno à la valeur EINVAL. Si la fonction échoue pour toute autre raison, *randomValue est défini à la valeur 0.

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

La fonction rand_s nécessite que la constante_CRT_RAND_S soit définie avant que l'instruction d'inclusion pour la fonction ne soit déclarée, comme dans l'exemple suivant :

#define _CRT_RAND_S
#include <stdlib.h>

rand_s dépend de l'API RtlGenRandom, qui est disponible dans Windows XP ou ses versions ultérieures.

Routine

En-tête requis

rand_s

<stdlib.h>

Pour plus d'informations sur la compatibilité, consultez 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

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft