首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

关于一个小猜数目字游戏 猜对的几率是多大

2012-07-08 
关于一个小猜数字游戏 猜对的几率是多大每一两天都要和同事打赌喝可乐,今天我们自己想了一个打赌方法,因为

关于一个小猜数字游戏 猜对的几率是多大

每一两天都要和同事打赌喝可乐,今天我们自己想了一个打赌方法,因为比较新鲜,打完之后喝着可乐想这个方式猜者猜中的几率,觉得还不是很好算,所以贴出来共享,有兴趣的也可以赌一赌,呵呵?

方式为:?
甲方从1—5这五个数中选出一个数写在纸上,然后乙方来猜,乙方有两次机会,每次猜一个数,乙方第一次如果没有猜对,甲方要告诉乙方自己写的数比乙方猜的数大还是小,乙方再猜,如果再没有猜对就算乙方输。

原帖地址:http://www.iteye.com/topic/63032

?

?

第一次猜1 或 5 的猜中概率是40%:

假如第一次猜1: ?如果中了,就中了(概率1/5), 没中的话,再剩下的4/5 里面再猜,此时猜中的概率是1/4

故: 1/5+(4/5)*(1/4) = 2/5 = 40%

第一次猜5的情况类似

第一次猜3的猜中概率是 60%

第一次猜3:中的概率是1/5, 每种的话 再猜 此时猜中的概率是1/2?

故: 1/5+(4/5)*(1/2) = 3/5 = 60%

第一次猜2或4的猜中概率是60%

假如第一次猜2: ?如果中了,就中了(概率1/5), 没中的话,

剩下的有2种可能

a) 小于2的话,那只能是1了(概率是1)

b) ?大于2的话 ,再剩下的3个里面猜 猜中的概率是 1/3

故: 1/5+( (1/5)*1 + (3/5)*(1/3) ) = 3/5 = 60%

?

=======================================

如果第一次是随机猜的话那么:

?

(1/5)*40%*2 + (1/5)*60%*3 = 0.52 = 52%

=======================================

?

以下是程序模拟:

?

?

<?php$times = 1000000;$hitTimes = 0;for($i = 0; $i < $times; $i++){$guessedNum = mt_rand(1,5);$n = mt_rand(1,5);if ($n == $guessedNum) {$hitTimes++;continue;}if ($n > $guessedNum && $n == mt_rand(($guessedNum+1>5?5:$guessedNum+1),5)) {$hitTimes++;} else if ($n == mt_rand(1,($guessedNum-1<1?1:$guessedNum-1))) {$hitTimes++;}}echo '$hitTimes: ', $hitTimes, "\n";echo '$times: ', $times, "\n\n";echo '$hitTimes/$times:',$hitTimes/$times,"\n"; 

?运行结果输出:

?

$hitTimes: 520787

$times: 1000000

?

$hitTimes/$times:0.520787

?

?

?

模拟1百万次, 命中率徘徊于 0.52左右 符合理论值。

热点排行