c语言伽马分布随机数,陈默的博客:090906伽马分布的随机数函数 - 哲思

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

当事情发生一定次数后才做某一件事情,如等够了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的头文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值