rand_s

Возвращает псевдослучайный номер.версия rand со службами расширений безопасности, как описано в разделе Средства безопасности в CRT.

errno_t rand_s(   unsigned int* randomValue);

Возвращаемое значение

Нуль, если оно завершится успешно, в противном случае - код ошибки.Если указатель ввода randomValue недопустимый указатель null, функция вызывает обработчик параметра, как описано в разделе Проверка параметров.Если выполнение может быть продолжено, то функция возвращает EINVAL и наборы errno В EINVAL.Если функция завершается сбоем по какой-либо другой причине, то *randomValue присваивается значение 0.

Заметки

rand_s функция записывает псевдослучайное целое число в диапазоне от 0 до UINT_MAX к указателю ввода.rand_s функция использует операционную систему для создания криптографически безопасные случайные числа.Она не потребляет начальное значение, сформированное srand функция, также оно не влияет на произвольно-пронумерованную последовательность, используемую by rand.

rand_s функция требует этой константы _CRT_RAND_S укажите значение для выписки включения функции для объявления, как в следующем примере:

#define _CRT_RAND_S
#include <stdlib.h>

rand_s зависящие от RtlGenRandom API, который доступен только в Windows XP и более поздних версиях.

Требования

Процедура

Обязательный заголовок

rand_s

<stdlib.h>

Дополнительные сведения см. в разделе Совместимость.

Пример

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

Эквивалент в .NET Framework

System:: Класс random

См. также

Ссылки

Поддержка чисел с плавающей запятой

srand