logo

C++의 rand() 및 srand()

랜드() 함수 헤더 파일에 정의된 C++ STL의 내장 함수입니다. . rand()는 일련의 난수를 생성하는 데 사용됩니다. 난수는 이 함수가 호출될 때마다 관련되지 않은 일련의 숫자를 제공하는 알고리즘을 사용하여 생성됩니다. rand() 함수는 C++에서 [0, RAND_MAX) 범위의 난수를 생성하는 데 사용됩니다.

RAND_MAX: 기본값은 구현마다 다를 수 있지만 최소 32767이 허용되는 상수입니다.



랜드() 구문

int rand (void);>

rand()의 매개변수

  • 이 함수는 매개변수를 사용하지 않습니다.

rand()의 반환 값

  • 랜드() [0, RAND_MAX) 범위의 의사 난수를 반환합니다.

예를 들어, 루프에서 rand()를 사용하여 C++에서 5개의 난수를 생성한 다음 프로그램을 컴파일하고 실행할 때마다 출력은 동일한 숫자 시퀀스여야 합니다.

차단된 연락처

랜드()의 예

C++








// C++ program to demonstrate> // the use of rand()> #include> #include> using> namespace> std;> > int> main()> {> >// This program will create some sequence of> >// random numbers on every program run> >for> (>int> i = 0; i <5; i++)> >cout <<>rand>() <<>' '>;> > >return> 0;> }>

>

>

산출

1804289383 846930886 1681692777 1714636915 1957747793>

rand() 함수의 복잡성

rand() 함수의 시간 복잡도와 공간 복잡도는 다음과 같습니다.

    시간 복잡도: O(1) 보조 공간 복잡도: O(1)

메모: 이 프로그램은 모든 프로그램이 실행될 때마다 동일한 일련의 난수를 생성합니다.

아래 프로그램은 0에서 N-1 범위의 값을 얻기 위한 rand() 함수의 구현입니다.

C++




// C++ program to demonstrate the> // use of rand() to get value> // in a range of 0 to N-1> #include> #include> using> namespace> std;> > int> main()> {> >int> N = 100;> >// This program will create some sequence of random> >// numbers on every program run within range 0 to N-1> >for> (>int> i = 0; i <5; i++)> >cout <<>rand>() % N <<>' '>;> > >return> 0;> }> > // This code is contributed by Susobhan Akhuli>

>

>

산출

삽입 정렬 자바
83 86 77 15 93>

아래 프로그램은 Upper_Bound에서 Lower_Bound까지 값을 가져오는 rand() 함수를 구현한 것입니다.

C++




// C++ program to demonstrate> // the use of rand() to get value> // in a range of lb to ub> #include> #include> using> namespace> std;> > int> main()> {> >int> lb = 20, ub = 100;> >// This program will create some sequence of random> >// numbers on every program run within range lb to ub> >for> (>int> i = 0; i <5; i++)> >cout << (>rand>() % (ub - lb + 1)) + lb <<>' '>;> > >return> 0;> }> > // This code is contributed by Susobhan Akhuli>

>

>

산출

66 90 38 99 88>

샌드()

srand() 함수는 C++ STL에 내장된 함수로, 다음에서 정의됩니다. 헤더 파일. srand()는 난수 생성기를 초기화하는 데 사용됩니다. srand() 함수는 일련의 의사 난수 정수를 생성하기 위한 시작점을 설정합니다. srand()가 호출되지 않으면 rand() 시드는 프로그램 시작 시 srand(1)이 호출된 것처럼 설정됩니다. 다른 시드 값은 생성기를 다른 시작점으로 설정합니다.

srand() 구문

void srand(  unsigned seed ); OR int  srand( unsigned int seed);>

rand()에서 사용하는 의사 난수 생성기에 값을 시드합니다. 씨앗.

매개변수

  • 씨앗: rand()에 대한 연속적인 호출에 의해 반환될 새로운 의사 난수 시퀀스에 대한 시드

반환 값

  • 이 함수는 의사 생성된 난수를 반환합니다.

메모: 의사 난수 생성기는 rand()를 호출하기 전과 프로그램 시작 시 한 번만 시드되어야 합니다. 새로운 의사 난수 배치를 생성할 때마다 반복적으로 시드하거나 다시 시드하면 안 됩니다.

표준 관행은 호출 결과를 사용하는 것입니다. 모래(시간(0)) 씨앗으로. 그러나 time()은 매번 달라지는 time_t 값을 반환하므로 의사 난수는 프로그램 호출마다 달라집니다.

rand() 및 srand()(예제 포함)

랜드() 그리고 샌드() 비교

srand()의 예

C++




// C++ program to generate random numbers> #include> #include> #include> using> namespace> std;> > int> main()> {> >// This program will create different sequence of> >// random numbers on every program run> > >// Use current time as seed for random generator> >srand>(>time>(0));> > >for> (>int> i = 0; i <4; i++)> >cout <<>rand>() <<>' '>;> > >return> 0;> }>

>

>

산출

1326865685 1413967981 1967280748 919663823>

시간 복잡도 : O(N), 여기서 N은 생성할 난수의 개수입니다.

arraylist 정렬 자바

메모: 이 프로그램은 프로그램이 실행될 때마다 서로 다른 일련의 난수를 생성합니다.

srand()와 rand()는 서로 어떤 관련이 있나요?

srand()는 rand가 난수를 생성하는 데 사용하는 시드를 설정합니다. rand를 처음 호출하기 전에 srand를 호출하지 않으면 srand(1)을 호출하여 시드를 1로 설정한 것과 같습니다.
즉, srand() — rand() 함수의 시드 설정 .