標籤:c語言 隨機數 拋投硬幣
//硬幣拋投(隨機數)
/*
=====================================================================
題目:拋投兩枚硬幣,試分析共有幾種情況,機率分別為多少?
=====================================================================
*/
#include<stdio.h>
#include<iomanip>
#include<ctime>
main()
{
int a,b,c,n,x,y;a=0;b=0;c=0;
srand(time(0));//這個必須有,否則無法產生隨機數!
for(n=0;n<100;n++)
{
x=rand()%(2-0)+0;//產生0,1兩種結果,表示一正一反,所以在[0,2)內產生隨機數,即2=2-0+0,在[a,b)內產生隨機數:rand()%(b-a)+a,此處a=0,b=2;
y=rand()%(2-0)+0;
printf("%3d: %d,%d ",n+1,x,y);
if((n+1)%5==0)printf("\n");
if(x+y==0)
a++;
else if(x+y==1)
b++;
else
c++;
}
printf("兩個正面:%d,一正一反:%d,兩個反面:%d\n",a,b,c);
}
/*
====================================================================
評:
首先要知道這是C語言和C++的組合,其實他們是一種語言。必須用到<ctime>和<iomanip>
函數(如果不知道,那麼背會記住就可以)。考點是投擲兩個硬幣可能產生三種結果:1、兩
正,2、兩反,3、一正一反,分別用0,1,2表示,這就分析出兩個要素需要產生三種結果,自
然是0+0=0;0+1=1;1+1=2;所以要隨機產生0,1兩個要素。即在[0,2)產生隨機數或等價於
[0,1]的隨機數!
=====================================================================
*/
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
C語言之基本演算法28—硬幣拋投(隨機數)