C语言 随机数 概率

来源:百度知道 编辑:UC知道 时间:2024/05/31 15:41:59
要使一个数有0.0005的概率为1,否则为0,怎么写?听说取随机数对这些小概率是不准的?

计算机里的取随机数函数是均匀分布的随机数。
0.0005的概率,相当于2000个数里取一个。

所以我们可以 在0到1999范围里取随机数,如果取到数值 1000,我们就得1(并响铃),否则得0。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

void main()
{
long int i,y;
double x, r, M = 2000.0;

srand((unsigned)time(NULL));
for (i=0;i<5000;i++) // 取5000个
{
r = ( (double)rand() / ((double)(RAND_MAX)+(double)(1)) );
x = (r * M);
y = (long int) x;
if (y == 1000) {
printf("1 ");printf("\007"); // 如果得1,就响铃!
} else printf("0 ");
};
}

关注