Exporter (0) Imprimer
Développer tout
div
eof
Développer Réduire
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

rand_s

Génère un nombre pseudo-aléatoire compris. Une version 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 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 de paramètre. 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.

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.

routine

en-tête requis

rand_s

<stdlib.h>

Pour plus d'informations, 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
Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft. Tous droits réservés.