陈默

陈默的博客

他的个人主页  他的博客

090906伽马分布的随机数函数

陈默  2009年09月06日 星期日 16:22 | 2588次浏览 | 0条评论

学习笔记

人到齐才开会的等待时间——伽马分布的随机数函数

当事情发生一定次数后才做某一件事情,如等够了4个人在打扑克(O_O)~

公式:x=-k*ln(r1*r2*..*rn);

其中,k为等待事件需要发生的次数,n为事情每n段时间发生一次。

 

//~ gamma,伽马分布函数
//~ 当某一事件发生k次之后才做另一件事情,而我们等待的事件每n时间发生一次
//~ 返回值为做另一件事情之前所等待的时间
double gama(int k,int n)
{
    double s=1.0;
    int i;
    for(i=1;i<=k;i++) s*=rnd(1);
    return -n*log(s);
}

 

设去参加某种活动,平均2分钟来1个人,每等够3个人则开走一辆出租车,模拟人等待开车所需的时间,程序运行一次,模拟500次。

int main(int argc,char** argv)
{
    static int a[25],i,j,k=3,m=500,n=2;
    double s;

    rnd(-2);
    printf("平均2分钟来一个人,够3个人开走一辆车,模拟等待的时间:\n");
    for(i=1;i<=m;i++)
    {
        s=gama(k,n);
        printf("%lf   ",s);
        j=(int)(s+0.5);        //个人认为,这里+0.5之后去整相当于四舍五入,不知是不是
        if(j>24) j=24;
        a[j]++;
    }
    for(j=0;j<=24;j++) printf("等待%3d分钟,有%3d人次\n",j,a[j]);
    rnd(-3);
    return 0;
}

 

以上,都需要include在0904blog里的那个rndlib.h的头文件

 

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !

暂时没有评论

Zeuux © 2024

京ICP备05028076号