zoukankan      html  css  js  c++  java
  • Project Euler 389 Platonic Dice (概率)

    题目链接:

    https://projecteuler.net/problem=389

    题意:

    掷一个正四面体骰子,记点数为(T)

    (T)个正六面体骰子,记点数和为(C)

    (C)个正八面体骰子,记点数和为(O)

    (O)个正十二面体骰子,记点数和为(D)

    (D)个正二十面体骰子,记点数和为(I)

    (I)的方差,并将你的答案四舍五入到(4)位小数。

    每个面出现的概率等价。

    题解:

    可能我学了假的概率论和统计方法...以前不知道Bienaymé formula...可能学了也忘了...不过我们可以查 Wiki...QAQ... https://en.wikipedia.org/wiki/Variance

    纵所周知,正(n)边形的骰子,掷骰子得到的期望点数可以定义为离散随机变量。

    比如六面的骰子,每个面(1)~(6),每个面出现的概率等价。那么期望点数 (X = frac{(1 + 2 + 3 + 4 + 5 + 6)}{6} =frac{7}{2})。期望的方差就是 (Var(X) = sum_{i=1}^{6}frac{1}{6}(i-frac{7}{2})^2 = frac{35}{12})

    拓展一下,对于正(n)边形的骰子,每个面(1)~(n),期望点数(X)就是(X = frac{1}{n}sum_{i=1}^{n}i = frac{n+1}{2})

    期望方差就是 (Var(X) = E(X^2) - (E(X)^2) = frac{1}{n}sum_{i=1}^{n}i - (frac{1}{n}sum_{i=1}^{n}i)^2 = frac{(n+1)(2n+1)}{6} -(frac{n+1}{2})^2 = frac{n^2 - 1}{12})

    最后根据 the Law of Total Variance,即 (Var(I) = Var(E(I|D)) + E(Var(I|D))] = Var(D)E(d)E(d) +Var(d) E(D)) 就可以做出来啦。

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    int dice[5] = {4,6,8,12,20};
    
    //https://en.wikipedia.org/wiki/Variance
    
    double E(int n)
    {
        return (n + 1) / 2.0;
    }
    double Var(int n)
    {
        return (n * n - 1) / 12.0;
    }
    
    int main(int argc, char const *argv[]) {
        double e = 0.0 , var = 0.0;
        double ed = 1.0, varsum = 0;
        for(int i = 0; i < 5; i++) {
            e = E(dice[i]);
            var = Var(dice[i]);
            varsum = varsum * e * e + var * ed;
            ed = ed * e;
        }
        printf("%.4f
    ", varsum);
        cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.
    ";
        return 0;
    }
    
    
  • 相关阅读:
    Java进阶——带你入门分布式中的Nginx
    详细介绍Spring Boot 2.0的那些新特性与增强
    Kafka对Java程序员有多重要?连阿里都再用它处理亿万级数据统计
    C#面向对象的三大特性
    汽车租赁系统 封装。继承和多态
    深入C#数据类型小部分第二章
    Java面向对象的三大特征
    SQL Server 存储过程
    一篇文章教你学会基础的HTML
    初步了解Entity Framework
  • 原文地址:https://www.cnblogs.com/LzyRapx/p/9053866.html
Copyright © 2011-2022 走看看