c语言 求随机数分布概率

c语言 求随机数分布概率这个程序是求0-1之间的十个随机数的和,现在想求这个和在0-1和1-2这两个区间的概率是多少 求大神改一下 贴可用程序追50分
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(void)
{
double i,a,n,c,sum,b;
srand( (unsigned)time( NULL ) );
for( i = 0; i < 10;i++ )
a=rand()%100;
n=a/100;
for(c = 0, b = 0; c< 10 ; c++)
{
b+= n;
}
printf("%f\n",b);
}

第1个回答  2016-07-11
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stddef.h>

int main() {
    float a,sum;

    int i,j,n,m;

    //100次求0-1之间的随机数之和在0-1 1-2之间的概率分布次数
    for(i=0;i<100;i++){
        srand(time(NULL));
        for(j=0;j<10;j++){
            a = (float)rand() / RAND_MAX;
            sum +=a;
        }
        if(sum >=0 && sum <=1)
            n++;
        }
        if(sum >1 && sum <= 2){
            m++;
        }
    }

    printf("0 1=%d 1 2=%d \n",n,m);

    return 0;
}

追问

18行少了个{
但是输出的结果比较奇怪啊
0 1=0 1 2=4196144

本回答被提问者采纳
第2个回答  2016-07-11
计算机里的取随机数函数是均匀分布的随机数。
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 ");
};
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网