如何用c#生产指数分布随机数?已知均值为m
答案:2 悬赏:30 手机版
解决时间 2021-01-08 22:44
- 提问者网友:流星是天使的眼泪
- 2021-01-07 23:13
如何用c#生产指数分布随机数?已知均值为m
最佳答案
- 五星知识达人网友:你可爱的野爹
- 2021-01-08 00:01
这个不难啊。我们姑且认为Random类的NextDouble()方法生成的伪随机数数列是遵循(0,1)上的均匀分布吧。(NextDouble()方法返回[0,1)的值,所以你要在代码里判断下,把0挖掉)
那么根据指数分布的特性,
你所谓的均值应该就是随机分布的期望吧?也就是m=1/λ。
所以,算法如下:
double u = 0d;
while(u == 0d)
{
u = (new Random()).NextDouble();
}
return -m * System.Math.Log(u * m, System.Math.E);这样就得到了指数分布的伪随机数。
那么根据指数分布的特性,
你所谓的均值应该就是随机分布的期望吧?也就是m=1/λ。
所以,算法如下:
double u = 0d;
while(u == 0d)
{
u = (new Random()).NextDouble();
}
return -m * System.Math.Log(u * m, System.Math.E);这样就得到了指数分布的伪随机数。
全部回答
- 1楼网友:怙棘
- 2021-01-08 01:10
推荐答案的F(x)不对,不是CDF,代码也错了。应该是x = log(1-u)/(−λ),按照此公式生成代码即可。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯