Posted on 2012-08-14 10:37
hoshelly 閱讀(840)
評論(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++) //初始化數(shù)組全部為0值
f[j]=0;
for(i=1;i<M;i++,f[cnt]++) //開始拋硬幣,f[cnt]記錄第cnt次拋硬幣出現(xiàn)正面的次數(shù)
for(cnt=1,j=1;j<=N;j++) //開始第一輪共32次的拋硬幣實驗
if(heads()) cnt++; //如果出現(xiàn)正面,即heads()返回值為1,則對應(yīng)著f[cnt]++,同時cnt++,此處利用數(shù)組索引統(tǒng)計正面出現(xiàn)次數(shù),負面數(shù)組值始終為0
for(j=1;j<=N;j++)
{
printf("%2d ",j);
for(i=0;i<f[j];i+=10) printf("*"); //正面每出現(xiàn)十次打印一個星號
printf("\n");
}
return 0;
}