Partilhar via


rand_s

Gera um número pseudoaleatórios.Uma versão do Rand com aprimoramentos de segurança sistema autônomo descrito em Aprimoramentos de segurança no CRT.

errno_t rand_s(   unsigned int* randomValue);

Valor de retorno

Zero se for bem-sucedido, caso contrário, um código de erro.Se o ponteiro entrada randomValue é um ponteiro nulo, a função chama um manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro. Se a execução terá permissão para continuar, a função retornará EINVAL e conjuntos errno para EINVAL. Se a função falhar por algum motivo, * randomValue é definido como 0.

Comentários

The rand_s função grava um pseudoaleatórios inteiro no intervalo de 0 a UINT_MAX ponteiro de entrada. The rand_s função usa o sistema operacional para gerar números aleatórios criptograficamente seguros. Não usar a semente gerada pelo srand função de , nem afeta a sequência numérica aleatória usada por rand.

The rand_s função requer essa constante _CRT_RAND_S ser definidos antes da demonstrativo de inclusão para a função deve ser declarado sistema autônomo no exemplo a seguir:

#define _CRT_RAND_S
#include <stdlib.h>

rand_s depende da RtlGenRandom API só está disponível no Windows XP e posteriores.

Requisitos

Rotina

Cabeçalho necessário

rand_s

<stdlib.h>

Para obter mais informações, consulte Compatibilidade.

Exemplo

// 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 * 10.0) + 1);
    }

    printf_s("\n");

    // Display 10 random doubles between 0 and 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 * max );
    }
}

Saída de exemplo

  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

Equivalente do NET Framework

Classe sistema::Random

Consulte também

Referência

Suporte de ponto flutuante

srand