注册 登录
编程论坛 C++教室

请帮忙看看并补充一下

maxmars 发布于 2011-08-28 08:10, 242 次点击
游戏的每一局是以都出正面次数(H)与反面次数(T)相差三次作为每局的结束,例如有一局丢出HHH(三次正面与零次反面)或有一局丢出TTHTHT(两次正面与五次反面)视为该局的结束点。
每丢掷一次必须付费一元
每局结束都可以获得8元,因此若该局丢掷次数超过8次,则表示将会输钱;若丢掷次数少於8次,则表示将会赢
程序代码:
#include<iostream>
#include<iomanip>
#include<ctime>
using namespace std;
int flip()
{

 if(rand()%2)
  return 0;

 else
  return 1;
}
int main()
{ srand( (unsigned)time( NULL ) );

 int heads=0;

 int tails=0;

 int m=8;

 cout<<"Times"<<setw(10)<<"Heads"<<setw(10)<<"Tails"<<endl;


 for(int n=0;n<10000;n++)

 {
  if(flip()==0)
  { tails++;
  m--;}
  else
  {heads++;
  m--;}
  if((tails-heads)==3||(heads-tails)==3)
      break;}

 cout<<n+1<<setw(10)<<heads<<setw(10)<<tails;

 if(m>0)

 printf("\n赢了%d元\n",m);

 else
     printf("\n输了%d元\n",-m);
  return 0;

}
如何统计得出该游戏是否可以赚钱?
1 回复
#2
czsbc2011-08-28 13:28
你是问用的数学算出来,还是要编程统计出来。
我算了一下,最后的期望好像是∑(7-2i)*(1/4)*(3/4)^(i-1)   (i=1,2,3···)
上面的式子算出来是-1
1