rand
의사 난수를 생성합니다. 이 함수의 보다 프로그래밍 방식으로 안전한 버전을 사용할 수 있습니다. 를 참조하세요 rand_s
. 생성된 rand
숫자는 암호화된 보안이 아닙니다. 보다 암호화적으로 안전한 난수 생성을 위해 C++ 표준 라이브러리<random>
에 선언된 함수를 사용합니다rand_s
.
구문
int rand(void);
반환 값
rand
는 위에서 설명한 대로 의사 난수를 반환합니다. 오류 반환이 없습니다.
설명
rand
함수는 0부터 RAND_MAX
(32767) 범위의 의사 난수 정수를 반환합니다. 함수를 srand
사용하여 호출 rand
하기 전에 의사-숫자 생성기를 시드합니다.
함수는 rand
잘 알려진 시퀀스를 생성하며 암호화 함수로 사용하기에 적합하지 않습니다. 보다 암호화적으로 안전한 난수 생성을 위해 C++ 표준 라이브러리<random>
에 선언된 함수를 사용합니다rand_s
.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.
요구 사항
루틴에서 반환된 값 | 필수 헤더 |
---|---|
rand |
<stdlib.h> |
호환성에 대한 자세한 내용은 호환성을 참조하세요.
예시
// crt_rand.c
// This program seeds the random-number generator
// with a fixed seed, then exercises the rand function
// to demonstrate generating random numbers, and
// random numbers in a specified range.
#include <stdlib.h> // rand(), srand()
#include <stdio.h> // printf()
void SimpleRandDemo(int n)
{
// Print n random numbers.
for (int i = 0; i < n; i++)
{
printf(" %6d\n", rand());
}
}
void RangedRandDemo(int range_min, int range_max, int n)
{
// Generate random numbers in the interval [range_min, range_max], inclusive.
for (int i = 0; i < n; i++)
{
// Note: This method of generating random numbers in a range isn't suitable for
// applications that require high quality random numbers.
// rand() has a small output range [0,32767], making it unsuitable for
// generating random numbers across a large range using the method below.
// The approach below also may result in a non-uniform distribution.
// More robust random number functionality is available in the C++ <random> header.
// See https://learn.microsoft.com/cpp/standard-library/random
int r = ((double)rand() / RAND_MAX) * (range_max - range_min) + range_min;
printf(" %6d\n", r);
}
}
int main(void)
{
// Seed the random-number generator with a fixed seed so that
// the numbers will be the same every time we run.
srand(1792);
printf("Simple random number demo ====\n\n");
SimpleRandDemo(10);
printf("\nRandom number in a range demo ====\n\n");
RangedRandDemo(-100, 100, 100000);
}```
```Output
Simple random number demo ====
5890
1279
19497
1207
11420
3377
15317
29489
9716
23323
Random number in a range demo ====
-82
-46
50
77
-47
32
76
-13
-58
90