rand_s
난수를 생성합니다.버전 rand 와 보안 기능 향상에 설명 된 대로 CRT의 보안 기능.
errno_t rand_s( unsigned int* randomValue);
반환 값
이 작업이 성공 하면 0 그렇지 않으면 오류 코드입니다.경우 입력된 포인터 randomValue 는 null 포인터의 설명에 따라 잘못 된 매개 변수 처리기를 함수를 호출 매개 변수 유효성 검사.함수 실행 계속할 수 있는지 여부를 반환 EINVAL 를 설정 하 고 errno 에 EINVAL.기타 다른 이유로 함수가 실패 한 경우 *randomValue 0으로 설정 됩니다.
설명
rand_s 함수 작성 의사 난수 정수 범위가 0 UINT_MAX 에 입력된 포인터입니다.rand_s 함수에서 운영 체제를 사용 하 여 암호화 보안 난수를 생성 합니다.생성 된 seed를 사용 하지 않습니다를 srand 함수를 사용 하는 임의의 숫자 시퀀스에 영향을 주지 않으며 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