于 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
安卓
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP