该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include int main()
{
int toptime;
int Atime;
int Btime;
int Acishu;
int Bcishu;
int Awin=0;
int Bwin=0;
int flag;
float Achance;
int cishu; printf("请输入几把定输赢:");
//就这个故事而言是5局,输入5
scanf("%d",&toptime);
printf("\n");
printf("请输入A胜了几局(要小于toptime):");
//假设A就就是默勒,他已经赢了3局,所以输入3
scanf("%d",&Acishu);
printf("\n");
printf("请输入B胜了几局(要小于toptime):");
//那B就是侍卫官,他赢了2局,所以输入2
scanf("%d",&Bcishu);
srand(time(NULL)); //模拟10000次分胜负(有人拿到55金币)的情况
for(cishu=0; cishu<10000; cishu++)
{
Atime=Acishu;
Btime=Bcishu;
//这个循环在有人胜出(拿到55金币)时结束
for(;;)
{
flag=rand()%2;
//flag值为0或1,也就是赢的局数+1,另一个不变
Atime=Atime+flag;
if(Atime>=toptime)
{
Awin++;
break;
}
Btime=Btime+1-flag;
if(Btime>=toptime)
{
Bwin++;
break;
}
}
} Achance=(float)Awin/10000; printf("A胜出的概率是%.4f.",Achance);
//计算默勒赢得55金币的几率,运行可知
//为0.68,而不是0.6,默勒
//吃亏喽~~~~(>_
return 0; }