天之道

享受编程的乐趣。
posts - 118, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

抛硬币的模拟实验

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;
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理