Posted on 2012-08-14 10:37
hoshelly 阅读(830)
评论(0) 编辑 收藏 引用 所属分类:
Programming
//模拟抛硬币的实验
#include<stdio.h>
#include<stdlib.h>
int heads() //返回0或非0值
{
return rand() <RAND_MAX/2;
}
int main()
{
int i,j,cnt;
int N,M;
scanf("%d%d",&N,&M); //抛一枚硬币N=32次,如此做M=1000次这样的实验
int *f=(int *)malloc((N+1)*sizeof(int));
for(j=1;j<=N;j++) //初始化数组全部为0值
f[j]=0;
for(i=1;i<M;i++,f[cnt]++) //开始抛硬币,f[cnt]记录第cnt次抛硬币出现正面的次数
for(cnt=1,j=1;j<=N;j++) //开始第一轮共32次的抛硬币实验
if(heads()) cnt++; //如果出现正面,即heads()返回值为1,则对应着f[cnt]++,同时cnt++,此处利用数组索引统计正面出现次数,负面数组值始终为0
for(j=1;j<=N;j++)
{
printf("%2d ",j);
for(i=0;i<f[j];i+=10) printf("*"); //正面每出现十次打印一个星号
printf("\n");
}
return 0;
}