产生按指数分布的随机数----摘自csdn

在编写排队系统仿真程序时,需要生成符合指数分布的随机数。文章提供了作者自己编写的Java代码,通过数学原理确保正确生成指数分布,并指出了网上找到的其他代码存在的错误。错误在于未正确处理指数分布密度函数的范围,可能导致生成负数结果。
摘要由CSDN通过智能技术生成

最近在写一个排队系统的仿真程序,中间因为系统的服务时间和到来时间都是按照指数分布产生的,所以就在网上找了一下,发现没有,也有可以参考的,可是从数学角度分析一下,发现都是错的,哎,求人不如求己,还是自己动手写吧。

 

代码贴在下面,做点贡献吧,此代码是按照严格的数学关系产生的,在最后附上一个别人写的程序,指出其问题所在。

 

public static double RandExp(double const_a)//此处的const_a是指数分布的那个参数λ

 


         {

 

            //此处属于技巧,利用GUID产生随机数的种子,模拟真正的随机
             Random rand = new Random(Guid.NewGuid().GetHashCode());
             double p ;
             double temp;
             if (const_a != 0)
                 temp = 1 / const_a;
             else
                 throw new System.InvalidOperationException("除数不能为零!不能产生参数为零的指数分布!");
             double randres;
             //while((randres = -temp * Math.Log(temp * p, Math.E)) > 0);
             //while ((p = rand.Nex

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值