产生一个具有一定概率分布的随机数
在C语言中,可是使用rand()函数产生一个伪随机数。当然如果设置srand(TIME(NULL))那几乎就是随机数了。这个伪随机数的范围是[0,RAND_MAX],RAND_MAX 在stdlib.h文件中定义。嗯,我们这里不管这个,回到正题。
首先假设有3个数,a1,a2,a3, 出现的概率分别为0.1,0.3,0.6。现在需要按它们出现的概率来随机产生。
一个简单的方法是:
1.利用
2.利用if语句判断这个数是在上面的那个区间,如[0,0.1),[0.1,0.4),以及[0.4,1.0]。
另一个方法则是利用while循环:
1.产生一个[0,1.0]的随机数 k ,方法同上;
2.利用如下语句:
首先假设有3个数,a1,a2,a3, 出现的概率分别为0.1,0.3,0.6。现在需要按它们出现的概率来随机产生。
一个简单的方法是:
1.利用
(double)rand()/RAND_MAX;
产生一个[0,1]到随机数k;2.利用if语句判断这个数是在上面的那个区间,如[0,0.1),[0.1,0.4),以及[0.4,1.0]。
另一个方法则是利用while循环:
1.产生一个[0,1.0]的随机数 k ,方法同上;
2.利用如下语句:
i = 0;
while(k>ai)
{
i++;
k += ai;
}
return ai;
(未完待续)
评论
发表评论