码迷,mamicode.com
首页 > 编程语言 > 详细

关于概率算法的问题,不知道逻辑错在哪里,求debug

时间:2017-07-08 11:13:28      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:turn   loser   tar   没有   ble   概率统计   get   而且   http   

做个骰子成功几率的分析,投n颗骰子,第一次投成功的几率是a,然后投成功的骰子,需要再投1次,这次成功的几率是b。第二次成功的骰子才算最终成功。

要分析出n颗骰子,最终成功0到n颗的概率。

我写了个算法,求出的结果,合计0到n颗的概率不近似1,而且差别很大,求教各位大大算法有什么错误。

我算法的基本思路:

  1. 先统计出第一次投成功0-n颗骰子的概率列表。这步我自认没有问题,合计验算结果近似1

    for (var i = 0; i <= n; i++){
        FirstSuccessRateTbl.Add(i
            , Utils.C(n, i)*(decimal)(Math.Pow((double)firstSucessRate,i)*Math.Pow((double)firstLoseRate,n-i)));
    }

    其中Utils.C是我按C概率公式写的函数。FirstSuccessRateTbl用的是哈希表。

  2. 然后以第一次成功的概率表作为条件概率统计后一次成功X颗的几率,即累加第一次成功X及X以上颗骰子的情况下第二次投成功X颗的概率。

    decimal sucessXRate = 0;
    for (int i = x; i <= n; i++) {
        sucessXRate += FirstSuccessRateTbl[i] * (decimal)(Math.Pow((double)secordSucessRate, i)*Utils.C(i,i-x)*Math.Pow((double)secordFailRate,i-x));
    }
    return sucessXRate;

但是按这个算法算下来,2次成功0-n颗的几率合计不为1,不知道错误在哪里。


关于概率算法的问题,不知道逻辑错在哪里,求debug >> csharp

这个答案描述的挺清楚的:
http://www.goodpm.net/postreply/csharp/1010000008918700/关于概率算法的问题不知道逻辑错在哪里求debug.html

关于概率算法的问题,不知道逻辑错在哪里,求debug

标签:turn   loser   tar   没有   ble   概率统计   get   而且   http   

原文地址:http://www.cnblogs.com/scrumme/p/7135934.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!