在 C++ 中使用 Rand7() 实现 Rand10()

c++server side programmingprogramming更新于 2025/6/26 23:22:17

假设我们有一个函数 rand7,它可以生成 1 到 7 范围内的均匀随机整数,我们必须编写另一个函数 rand10,它可以生成 1 到 10 范围内的均匀随机整数。我们不能使用某些库函数来生成随机数。

假设我们需要两个随机数,它们可能是 [8,10]。

为了解决这个问题,我们将遵循以下步骤 −

  • rand40 := 40
  • while rand40 >= 40
    • rand40 := (rand7() - 1) * 7 + (rand7() – 1)
  • 返回 rand40 mod 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

相关文章