概率编程:小明小红掷骰子

1.题目:

小明小红掷骰子,小明有n个骰子,第i个骰子有vi个面,每个面的点数为1、2、3...vi。

小红有m个骰子,第j个骰子有vj个面,每个面的点数为1、2、3...vj。

小明小红将自己的所有的骰子都掷一次,小明的骰子的点数总和有多大概率比小红的大。

2.测试用例:

输入:
n=1  m=3
vi={1}
vj={2,3,4}

输出:
0.255

3.采用大数模拟:

#include <iostream>
#include <string>
#include<vector>
using namespace std;
#define num 1000.0
int main() {
    int n, m;
    cin >> n >> m;
    vector<int>v1(n);
    for (int i = 0; i < n; ++i)cin >> v1[i];
    vector<int>v2(m);
    for (int i = 0; i < m; ++i)cin >> v2[i];
    int cnt = 0;
    for(int k=0;k< num;++k){
        int a = 0;
        for (int i = 0; i < n; ++i) {
            a += (rand() % v1[i]);
        }
        int b = 0;
        for (int i = 0; i < m; ++i) {
            b += (rand() % v2[i]);
        }
        if (a+n > b+m)++cnt;
    }
    printf("%.3f",0.0001+float(cnt)/ num);
}

猜你喜欢

转载自blog.csdn.net/qq_42987967/article/details/126456790
今日推荐