다음을 통해 공유


rand_s

의사 난수를 생성합니다. 이 함수는 CRT의 보안 기능에 설명된 대로 향상된 보안 기능을 갖춘 보다 안전한 버전의 함수rand입니다.

구문

errno_t rand_s(unsigned int* randomValue);

매개 변수

randomValue
생성된 값을 저장할 정수에 대한 포인터입니다.

반환 값

정상적으로 실행되는 경우 0이고 그렇지 않으면 오류 코드입니다. 입력 포인터 _randomValue_ 가 포인터인 경우 함수는 NULL 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다. 계속해서 실행하도록 허용된 경우 함수가 EINVAL를 반환하며 errnoEINVAL로 설정합니다. 다른 이유로 *_randomValue_ 인해 함수가 실패하면 0으로 설정됩니다.

설명

rand_s 함수는 0부터 UINT_MAX 범위의 의사 난수 정수를 입력 포인터에 씁니다. rand_s 함수는 운영 체제를 사용하여 암호화된 보안 난수를 생성합니다. 함수에서 생성한 시드를 srand 사용하지 않으며, 에서 사용하는 rand난수 시퀀스에도 영향을 주지 않습니다.

_CRT_RAND_S 다음 예제와 같이 함수의 stdlib.h 헤더가 rand_s 포함되기 전에 상수가 정의되어야 합니다.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.

#define _CRT_RAND_S
#include <stdlib.h>

rand_sRtlGenRandom Windows XP 이상에서만 사용할 수 있는 API에 따라 달라집니다.

요구 사항

루틴에서 반환된 값 필수 헤더
rand_s <stdlib.h>

자세한 내용은 호환성을 참조하세요.

예시

// crt_rand_s.c
// This program illustrates how to generate random
// integer or floating point numbers in a specified range.

// Remember to define _CRT_RAND_S before you include
// stdlib.h.
#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

참고 항목

수학 및 부동 소수점 지원
rand
srand