Computer >> Máy Tính >  >> Lập trình >> C ++

Triển khai Rand10 () bằng cách sử dụng Rand7 () trong C ++

Giả sử chúng ta có một hàm rand7 tạo ra một số nguyên ngẫu nhiên đồng nhất trong phạm vi từ 1 đến 7, chúng ta phải viết một hàm khác rand10 tạo ra một số nguyên ngẫu nhiên đồng nhất trong phạm vi 1 đến 10. Chúng ta không thể sử dụng một số hàm thư viện để tạo số ngẫu nhiên.

Giả sử chúng ta muốn hai số ngẫu nhiên, vì vậy chúng có thể là [8,10].

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • rand40:=40
  • trong khi rand40> =40
    • rand40:=(rand7 () - 1) * 7 + (rand7 () - 1)
  • trả lại rand40 mod 10 + 1

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

#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;
}

Đầu vào

Call the function three times

Đầu ra

2
2
6