在 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