Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 Rand7()을 사용하여 Rand10() 구현

<시간/>

1에서 7 사이의 균일한 임의의 정수를 생성하는 함수 rand7이 있다고 가정하고 1에서 10까지의 범위에서 균일한 임의의 정수를 생성하는 또 다른 함수 rand10을 작성해야 합니다. 임의의 숫자를 생성하기 위해 일부 라이브러리 함수를 사용할 수 없습니다.

두 개의 난수를 원하므로 [8,10]이 될 수 있습니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • rand40 :=40
  • 동안 rand40>=40
    • rand40 :=(rand7() - 1) * 7 + (rand7() – 1)
  • rand40 모드 10 + 1을 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

#include <bits/stdc++.h>
using namespace std;
int rand7(){
   return 1 + rand() % 7;
}
class Solution {
   public:
   int rand10() {
      int rand40 = 40;
      while(rand40 >= 40){
         rand40 = (rand7() - 1) * 7 + (rand7() - 1);
      }
      return rand40 % 10 + 1;
   }
};
main(){
   srand(time(NULL));
   Solution ob;
   cout << (ob.rand10()) << endl;
   cout << (ob.rand10()) << endl;
   cout << (ob.rand10()) << endl;
}

입력

Call the function three times

출력

2
2
6