[算法实现]选择n次(n≥M), 能集齐M种卡片的概率是多大?

来源:互联网 发布:手机淘宝注册开店流程 编辑:程序博客网 时间:2024/04/29 03:53
  作者:zhanhailiang 日期:2013-12-08

一个礼盒由5种不同颜色(红, 橙, 蓝, 绿)的小球, 每次取小球概率相同, 请问取多少次小球可以取全5种颜色的小球?

数学分析

请见:选择 n 次 (n ≥ M),能集齐 M 种卡片的概率是多大?

程序实现

<?php/** * @version  1.0 * @author   wade * @date     2013-12-08 * @desc     一个礼盒由5种不同颜色(红, 橙, 蓝, 绿)的小球, 每次取小球概率相同, 请问取多少次小球可以取全5种颜色的小球? */ ini_set('memory_limit', '512M'); $sum = 0;$tryTimes = array(); // 做200000次试验for($i = 0; $i < 200000; $i ++) {    $target = array();     for($j = 1; TRUE; $j ++) {        $target[] = mt_rand(1,5);        if(count(array_diff(range(1, 5, 1), $target)) === 0 || $j > 1000) {            $tryTimes[] = array($j, $target);            $sum += $j;            break;        }    }} $output = sprintf('average try times: %f; all try times: %s', $sum/200000, json_encode($tryTimes));echo $output.PHP_EOL;

结论

期望值为11.425675

原创粉丝点击