首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

怎么得到相对合理的概率

2012-03-07 
如何得到相对合理的概率需求如下:在条件0的时候30%概率发生事件040%概率发生事件130%概率发生事件2在条件1

如何得到相对合理的概率
需求如下:

在条件0的时候   30%概率发生事件0   40%概率发生事件1   30%概率发生事件2
在条件1的时候   70%概率发生事件0   10%概率发生事件1   20%概率发生事件2.

现处理方式如下
int   num   =   getRand(0,10);//取,0到9之间的随机值
if(条件0)   {
    if(num   <   3)事件0
    else   if(num   <   7)事件1
    else   事件2
}else

if(条件1)   {
    if(num   <   7)事件0
    else   if(num   <   8)事件1
    else   事件2
}

但是实际上   这样的概率取得方式并不理想,多数情况下不能体现概率的含义,比如我进行统计100次事件发生,而得到的各个事件的发生概率与期望相差很大.

请问有其他方式可以得到相对真是的概率么?

[解决办法]
也就是说在条件0的时候,做100次,事件0发生发生30次,事件1发生发生40次,事件2发生发生30次咯?结果差很大?做1000次看看。
[解决办法]
事件0 事件0 事件0 事件1 事件1 事件1 事件1 事件2 事件2 事件2

通过随机数进行乱序,比如:
事件2 事件0 事件1 事件2 事件1 事件0 事件1 事件2 事件0 事件1

然后依次取好了,取一个删一个,取完后复位。保证完全符合概率。
[解决办法]
是你的判断弄错了,修改如下:
int num = getRand(0,10);//取,0到9之间的随机值
if(条件0) {
if(num < 3)事件0
else if(num > 2 && num < 7)事件1
else 事件2
}else

if(条件1) {
if(num < 7)事件0
else if(num > 6 && num < 8)事件1
else 事件2
}

热点排行