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


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

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

为了解决这个问题,我们将按照以下步骤操作 −

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

更新时间: 02-05-2020

343 次浏览

开启你的 职业生涯

完成课程即可获得认证

开始学习
广告
© . All rights reserved.