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\n", varsum);
cerr << "Time elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
return 0;
}
Project Euler 389 Platonic Dice (概率)的更多相关文章
- [project euler] program 4
上一次接触 project euler 还是2011年的事情,做了前三道题,后来被第四题卡住了,前面几题的代码也没有保留下来. 今天试着暴力破解了一下,代码如下: (我大概是第 172,719 个解出 ...
- Python练习题 029:Project Euler 001:3和5的倍数
开始做 Project Euler 的练习题.网站上总共有565题,真是个大题库啊! # Project Euler, Problem 1: Multiples of 3 and 5 # If we ...
- Project Euler 9
题意:三个正整数a + b + c = 1000,a*a + b*b = c*c.求a*b*c. 解法:可以暴力枚举,但是也有数学方法. 首先,a,b,c中肯定有至少一个为偶数,否则和不可能为以上两个 ...
- Project Euler 44: Find the smallest pair of pentagonal numbers whose sum and difference is pentagonal.
In Problem 42 we dealt with triangular problems, in Problem 44 of Project Euler we deal with pentago ...
- project euler 169
project euler 169 题目链接:https://projecteuler.net/problem=169 参考题解:http://tieba.baidu.com/p/2738022069 ...
- 【Project Euler 8】Largest product in a series
题目要求是: The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × ...
- Project Euler 第一题效率分析
Project Euler: 欧拉计划是一系列挑战数学或者计算机编程问题,解决这些问题需要的不仅仅是数学功底. 启动这一项目的目的在于,为乐于探索的人提供一个钻研其他领域并且学习新知识的平台,将这一平 ...
- Python练习题 049:Project Euler 022:姓名分值
本题来自 Project Euler 第22题:https://projecteuler.net/problem=22 ''' Project Euler: Problem 22: Names sco ...
- Python练习题 048:Project Euler 021:10000以内所有亲和数之和
本题来自 Project Euler 第21题:https://projecteuler.net/problem=21 ''' Project Euler: Problem 21: Amicable ...
随机推荐
- 在Ubuntu14.04中安装Py3和切换Py2和Py3环境
前几天小编给大家分享了如何安装Ubuntu14.04系统,感兴趣的小伙伴可以戳这篇文章:手把手教你在VMware虚拟机中安装Ubuntu14.04系统.今天小编给大家分享一下在Ubuntu14.04系 ...
- VS Code在本地进行调试和打开本地服务器
进行本地调试 1.在扩展中搜索插件 Debugger for Chrome 进行安装.我已经进行了安装,就没有出现安装字样. 2.配置launch.json文件,根据步骤来.file就是你在浏览器中需 ...
- div设置了居中和宽度,但是显示时宽度占100%
<div id="bigDiv" align="center"> <div id="bottom" style=" ...
- 关于Java IO InputStream 的一点整理!
程序的开发其中一直在用文件的读写.可是对于java其中输入流以及输出流仅仅是会用不理解,一直以来想搞清楚其,可是一直没有运行(悲剧).今天早上抽出半个小时通过JDK API1.6.0中文版帮助逐步的了 ...
- SQL查询表中的用那些索引
方法1. 使用系统表 -- 查询一个表中的索引及索引列 USE AdventureWorks2008 GO SELECT indexname = a.name , tablename = c. n ...
- 关于ajax访问express服务器的跨域问题
在学习es6的时候用promise封装了一个ajax <script type="text/javascript"> function getNews(URL) { l ...
- [论文笔记] CUDA Cuts: Fast Graph Cuts on the GPU
Paper:V. Vineet, P. J. Narayanan. CUDA cuts: Fast graph cuts on the GPU. In Proc. CVPR Workshop, 200 ...
- js--基于面向对象的组件开发及案例
组件的开发:多组对象之间想兄弟关系一样,代码复用的形式. 问题:1).参数不写会报错:利用对象复制————配置参数和默认惨啊书的覆盖关系(逻辑或也可以)2).参数特别多时会出现顺序问题:json解决 ...
- 跟我一起造轮子 手写springmvc
原创地址:https://www.cnblogs.com/xrog/p/9820168.html 作为java程序员,项目中使用到的主流框架多多少少和spring有关联,在面试的过程难免会问一些spr ...
- Ansible学习记录六:Tower安装
0.特别说明 1. 本文档没有特殊说明,均已root用户安装 2. 本文档中ftp传输文件的工具采用filezilla. 3. 本文档中的执行命令必须严格按照顺序而来. 4. 本文档中所用浏览器为Go ...