Exportar (0) Imprimir
Expandir todo
and
div
eof
not
or
xor
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

rand_s

Genera un número pseudoaleatorio. Una versión de rand con mejoras de seguridad como se describe en Características de seguridad de CRT.

errno_t rand_s(   unsigned int* randomValue);

Cero si es correcto, si no, un código de error. Si el puntero randomValue de entrada es un puntero NULL, la función invoca un controlador no válido de parámetro, tal y como se describe en Validación de parámetros. Si la ejecución puede continuar, la función devuelve EINVAL y establece en errno en EINVAL. Si se produce un error en la función por cualquier otro motivo, *randomValue se establece en 0.

La función de rand_s escribe un entero pseudoaleatorio en el intervalo de 0 a UINT_MAX al puntero de la entrada. La función de rand_s utiliza el sistema operativo para generar criptográficamente garantiza números aleatorios. No utiliza el valor generado por la función de srand , ni afecta a la secuencia de números aleatorios utilizada por rand.

La función de rand_s requiere que _CRT_RAND_S constante está definido antes de la instrucción include para que la función está declarada, como en el ejemplo siguiente:

#define _CRT_RAND_S
#include <stdlib.h>

rand_s depende de RtlGenRandom API, que sólo en Windows XP y posterior disponibles.

Rutina

Encabezado necesario

rand_s

<stdlib.h>

Para obtener más información, vea Compatibilidad.

// 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

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft