在C语言中,可是使用rand()函数产生一个伪随机数。当然如果设置srand(TIME(NULL))那几乎就是随机数了。这个伪随机数的范围是[0,RAND_MAX],RAND_MAX 在stdlib.h文件中定义。嗯,我们这里不管这个,回到正题。 首先假设有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; (未完待续)