计算随机概率 p 下取 N 个0,1, 出现 M 个 0 的概率
2016-05-26 00:00
375 查看
<?php /** * 计算随机概率 p 下取 N 个0,1, 出现 M 个 0 的概率. * * 二项式系数公式: C(n,r) = n! / r!(n-r)! */ define('N', 30); define('M', 15); define('P', 0.02257); # 0.02257 echo "Hello World!\n"; # 测试: 计算阶乘. if (false) { for ($i = 1; $i < N; ++$i) { $f = factorial($i); echo "factorial($i) is $f\n"; } } # 测试计算二项式系数. if (false) { $N = N; for ($i = 0; $i <= N; ++$i) { $bin_factor = binomial_factor(N, $i); echo "bin_factor C($N, $i) is : $bin_factor\n"; } } # 实际计算概率. if (true) { $N = N; $p = P; # 得到 0 的概率 p. $q = 1 - $p; # 得到 1 的概率 q. $sigma_p = 0; for ($i = 0; $i <= N; ++$i) { $bin_factor = binomial_factor(N, $i); $i_p = pow($p, N-$i); $i_q = pow($q, $i); $pp = $bin_factor * $i_p * $i_q; $sigma_p += $pp; echo "[$i] \t$pp \t\t$sigma_p\n"; } } exit(); # 二项式定理 系数计算. function binomial_factor($n, $r) { # C(n,r) = n! / r!(n-r)! $n_f = factorial($n); $r_f = factorial($r); $nr_f = factorial($n - $r); $factor = $n_f / $r_f / $nr_f; return $factor; } # 计算数字 $i 的阶乘, 使用记忆器加快计算速度. $factorial_memory = ['1' => 1, '2' => 2, '3'=> 6, '4'=>24, '5' => 120]; function factorial($i) { global $factorial_memory; if ($i == 0) return 1; if ($i == 1) return 1; if (isset($factorial_memory[$i])) return $factorial_memory[$i]; $result = $i * factorial($i - 1); $factorial_memory[$i] = $result; return $result; }
相关文章推荐
- 堆 (数据结构)
- Objective-C 记录
- 判断txt文件的字符编码
- 从三层架构到MVC,MVP
- 设置 cell 中 detailTextLabel 文字的不同颜色
- modal的样式及 半透明控制器效果
- Access to the dex task is now impossible, starting
- MVC、MVP、MVVM模式比较
- Python:显示程序运行进度条
- phpstorm 10 注册码
- wampmanage 目录名称无效
- Apache NIO 框架 Mina 使用中出现 too many open files 问题的解决办法
- 【Jetty】Embedding Jetty
- MySQL错误代码大全
- ZooKeeper典型应用场景一览
- 深入浅出Java回调机制
- Windows环境更新多个git
- CentOS 7.0关闭默认防火墙启用iptables防火墙
- 使用 Xbrowser4远程连接到 CentOS 7
- Install MATE or XFCE on CentOS 7