c++代码实现呆唯同时喜欢围棋和《云顶之奕》这两款有趣的游戏。 她每次下围棋获胜的概率为 p ,每次下《云顶之奕》获得第一名的概率为q 。 她决定按照"赢了就换游戏"的顺序游玩这两款游戏。 具体来说:她首先开始下围棋,如果输了则继续下围棋,直至获胜;然后下《云顶之奕》,如果没获得第一名则继续下《云顶之奕》,直至获得第一名;然后下围棋...... 求呆唯的第n 局游戏是围棋的概率。
时间: 2024-02-28 15:54:57 浏览: 144
weiqi.zip_visual c_weiqi_围棋_围棋C 源代码_围棋联网
以下是 C++ 代码实现:
```c++
#include <iostream>
#include <cmath>
using namespace std;
double game_prob(double p, double q, int n) {
// 计算呆唯在第一局游戏中选择下围棋的概率
double p1 = p / (2 - p);
// 迭代计算呆唯在第 n 局游戏中选择下围棋的概率
double pn = p1;
for (int i = 2; i <= n; i++) {
// 如果上一局游戏是围棋,那么这一局游戏的概率为 p
// 如果上一局游戏是《云顶之奕》且获得了第一名,那么这一局游戏的概率为 q(1-p)
// 如果上一局游戏是《云顶之奕》但没获得第一名,那么这一局游戏的概率为 p(1-q)
if (pn == p) {
pn = p;
} else if (pn == q * (1 - p)) {
pn = p * (1 - q);
} else {
pn = p / (2 - pn * (1 - q));
}
}
return pn;
}
int main() {
double p = 0.6;
double q = 0.2;
int n = 5;
double prob = game_prob(p, q, n);
cout << "第 " << n << " 局游戏是围棋的概率为:" << prob << endl;
return 0;
}
```
其中,p 是下围棋获胜的概率,q 是下《云顶之奕》获得第一名的概率,n 是呆唯想要知道的第 n 局游戏的概率。函数 game_prob 返回呆唯在第 n 局游戏中选择下围棋的概率。
阅读全文