这个月在举行世界杯,发现朋友圈都是在秀赌球的东西,今天压的谁,赚了多少多少,或者是我压的少啦,错过了一套海景房之类的,看的我心里痒痒,然后我就按照这些赌徒的心态设计了一种赌的方法,因为是赌球所以胜率设置为三分之一,赔率1:2,,然后我就编码测试了一下,果然赌博还是算了。。。
世界杯赌球,第一次赌100,输了话第二次赌300,第三次900,直到赢了再从100开始
题目背景:
1、玩家遵循输了第二次赌资翻三倍,赢了赌资回归100
2、玩家有赌资一千万,可以全部用于赌
3、玩家没有第三方借钱渠道,每次的赌资都来自1000万中的累积的收益/亏损
4、玩家胜率为三分之一,赔率为1:2
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<math.h> #define N 1000 //测试的场数 #define n 1 //启动资金 (单位:百元) #define money 100000 // 总资产一千万 #define m 3 //赔率 #define testtimes 3000//总测试次数 int main(){ int i,wintimes=0,losetimes=0,temp,winsum=0,losesum=0; //赚钱的次数,亏钱的次数,赚钱数,亏钱数 for(i=1;i<=testtimes;i++){ printf("第%d次测试:",i); if(playonetime()>0){ wintimes++; printf("赚了\n"); } else{ losetimes++; printf("破产了\n"); } } printf("挣钱的次数为%d\n",wintimes); printf("破产的次数为%d\n",losetimes); printf("挣钱的概率%3.3f%%",(100*(float)wintimes/testtimes)); } int playonetime(){ //单个玩家计算 int sum = 0; //总收益 int i,j,k,zhu=0;//次数;连续输的次数;单次胜负判定,当场的赌注 for(i=0,j=0;i<N;i++){ k=rand()%100+1; //产生1-100的随机数 zhu = n*pow(m,j); if(zhu>=(money +sum)){ break; }//单次赌注不能大于收益加总资金 if(k<67){ //输了 输的概率为%67 sum +=-n*pow(m,j); j++; }else{ //赢了 sum +=n*pow(m,j); j=0; } } printf("共玩了%d场,最终收益为:%d(单位:百元) :%d ",i,sum); return sum; }
可以看到测试3000次能赚到钱的概率只有%7或%8,所以兄弟们,还是远离赌博吧,珍惜生命。哈哈!