1. 首页
  2. Python

用python做一个模拟实验,证明赌局总会十有九输

“u003Cdivu003Eu003Cpu003Eu003Cstrongu003E前言u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E在知乎上看见这么一个问题:用python做一个模拟实验,证明赌局总会十有九输!!u003Cu002Fpu003Eu003Cpu003E似乎挺有道理的,有人就是想不通,胜率50%,长期应该是各有胜负,为何会有人倾家荡产,对于这个问题我们不妨用Python做一个模拟实验。u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fdfic-imagehandleru002Fdc6d544b-1673-400a-aec2-9fa2df79f511″ img_width=”1200″ img_height=”960″ alt=”用python做一个模拟实验,证明赌局总会十有九输” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E实验思路u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Colu003Eu003Cliu003E赌博方式设定为玩骰(这字念tou、二声,意不意外)子、猜大小,一天赌一次,每局一庄一闲,直到闲家输光或者赌场下班(假设赌场也会下班);u003Cu002Fliu003Eu003Cliu003E赌徒认为胜负是纯运气时间,坚信不可能把把开大(或开小),所以在连输三把之后,赌徒会加注50%;u003Cu002Fliu003Eu003Cliu003E赌徒共有一百万元存款,第一次参加赌局会携带两万元现金;u003Cu002Fliu003Eu003Cliu003E赌徒输光存款之后会尝试借高利贷扳本(保守估计月利率5%,国家规定的高利贷利率上限3%,据说赌场高利贷会高很多,具体多少不明);u003Cu002Fliu003Eu003Cliu003E借高利贷之后第二天立即归还(一般赌徒很少还钱这么快的,假设我们模拟的是一个“自律”的赌徒)。u003Cu002Fliu003Eu003Cu002Folu003Eu003Cpu003Eu003Cstrongu003E实验步骤u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Culu003Eu003Cliu003Eu003Cstrongu003E创建人物u003Cu002Fstrongu003Eu003Cu002Fliu003Eu003Cu002Fulu003Eu003Cpreu003Eclass gambler():u003Cbru003E def __init__(self):u003Cbru003E self.deposit = 1000000 # 百万存款,这里不考虑不动产u003Cbru003E self.bet = 20000 # 赌资u003Cbru003E self.usury = 0 # 借贷u003Cbru003E self.lose = 0 # 连输局数u003Cbru003ECathala = gambler()#赌博商人卡达拉u003Cbru003ECathala.bet = 100000000u003Cbru003ECathala.deposit = 100000000u003Cbru003EGeralt = gambler()#Geralt是一名狂热的赌博爱好者u003Cbru003Eu003Cu002Fpreu003Eu003Culu003Eu003Cliu003Eu003Cstrongu003E创建赌局u003Cu002Fstrongu003Eu003Cu002Fliu003Eu003Cu002Fulu003Eu003Cpu003E今天我们不玩昆特牌,玩色子。u003Cu002Fpu003Eu003Cpu003E就是这个靠运气的游戏,下面是赌局的函数实现:u003Cu002Fpu003Eu003Cpreu003Ebet = 1000#每一把1000块u003Cbru003Ecount = 0u003Cbru003Egambling_list = []#记录每局比赛的输赢u003Cbru003Edef gambling(gambler_a,gambler_b,bet,count):#a是庄家,b是闲家,bet是当局赌注,count是当前的赌局编号u003Cbru003E point = random.randint(2, 12) # 骰子点数u003Cbru003E guess = random.randint(0, 1) # 猜大小,0为小,1为大u003Cbru003E if (point > 7 and guess == 1) or (point <= 7 and guess == 0): # 猜对了u003Cbru003E Geralt.bet += betu003Cbru003E Cathala.bet -= betu003Cbru003E return Trueu003Cbru003E else:u003Cbru003E Geralt.bet -= betu003Cbru003E Cathala.bet += betu003Cbru003E return Falseu003Cbru003Eu003Cu002Fpreu003Eu003Culu003Eu003Cliu003E是男人就玩100局u003Cu002Fliu003Eu003Cu002Fulu003Eu003Cpreu003Edef One_day_gambling():u003Cbru003E Geralt.bet = 20000u003Cbru003E bet = 1000u003Cbru003E count = 0u003Cbru003E while True:u003Cbru003E gambling_list.append(gambling(Cathala, Geralt, bet, count))u003Cbru003E count += 1u003Cbru003E if count > 3 and gambling_list[count – 3] == gambling_list[count – 2] == gambling_list[count – 1] == False:u003Cbru003E bet = bet * 1.5#连输三局加赌注,加完之后如果还输继续加,赢了赌注保持不变u003Cbru003E if Geralt.bet <= -5000 or count >= 100:#每天最多只敢借五千的高利贷,每天最多100局,其实大部分都玩不到100局就输光了u003Cbru003E breaku003Cbru003E return Geralt.bet-20000#返回每天独居结束时的负债或盈利u003Cbru003Eu003Cu002Fpreu003Eu003Culu003Eu003Cliu003E然后我们把每天的输赢都记录下来,最后统计一下有没有破产。u003Cu002Fliu003Eu003Cu002Fulu003Eu003Cpreu003Edef record_daily_gambling():u003Cbru003E debt = []#记录每一天的最终盈亏u003Cbru003E for i in range(3000):u003Cbru003E n = One_day_gambling()u003Cbru003E if n<0:#小于零就要借高利贷了,计一天的利息u003Cbru003E n = n*1.00167u003Cbru003E debt.append(n)u003Cbru003E if sum(debt) <= -1000000:#一百万输光算破产u003Cbru003E return (sum(debt),i)#破产后记下最终输掉的资金,以及破产时间u003Cbru003E return (sum(debt),3000)#一直没有破产的人u003Cbru003E u003Cbru003Edef main():u003Cbru003E every_example = pd.DataFrame()u003Cbru003E lost_money = []u003Cbru003E bankrupt_time = []u003Cbru003E for j in range(1000):u003Cbru003E m = record_daily_gambling()u003Cbru003E lost_money.append(m[0])u003Cbru003E bankrupt_time.append(m[1])u003Cbru003E print(j)u003Cbru003E every_example[‘lost_money’] = lost_moneyu003Cbru003E every_example[‘bankrupt_time’] = bankrupt_timeu003Cbru003E every_example.to_csv(‘experiment_data.csv’,index=False,sep=’,’)u003Cbru003E u003Cbru003Eif __name__ == “__main__”:u003Cbru003E main()u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cstrongu003E统计数据u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E总共模拟了1000人,其中未破产的有167人(其中亏损3人,盈利164人),破产833人,破产率83.3%,基本上最后都破产了,我们看看大家各自的破产时间吧。u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F3734dcc12e6a46f392adc599f9cdd6af” img_width=”640″ img_height=”617″ alt=”用python做一个模拟实验,证明赌局总会十有九输” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E破产时间分布u003Cu002Fpu003Eu003Cpu003E那么最后没有破产的人呢?最终盈利多少呢?u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp9.pstatp.comu002Flargeu002Fpgc-imageu002Fa2f4d337365f4a929296edee2043c3f5″ img_width=”640″ img_height=”702″ alt=”用python做一个模拟实验,证明赌局总会十有九输” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E未破产人员的八年总盈利u003Cu002Fpu003Eu003Cpu003E其中最富有的赢了1250万,一千万以上的只有六个。看起来很多对吧,我们继续往下看。这是中国这近十年的通货膨胀率(官方数据):u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002Ff0d6bfc0cfdb49fa9c43295fbbf84bc0″ img_width=”640″ img_height=”288″ alt=”用python做一个模拟实验,证明赌局总会十有九输” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E近十年通货膨胀率u003Cu002Fpu003Eu003Cpu003E但是实际通货膨胀率要比官方数据(根据居民消费指数)高得多(十年前两块钱一个的肉夹馍如今已经要十块钱了,按3%算,现在肉夹馍应该卖两块7毛钱~),为何会有这么大偏差呢,因为国家统计的CPI(居民消费指数)还是采用的1997年以前的标准,没有将买房支出算入CPI中。u003Cu002Fpu003Eu003Cpu003E网上查到的认可度比较高的说法是近十年的通货膨胀率已经达到了u003Cstrongu003E13%u003Cu002Fstrongu003E,暂且按13%计算的话,8年后的1250万仅相当于今天的553万,1000个身家100万的人,没日没夜地扑在赌桌上,花了八年时间,最多的一个人也只挣了553万。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E结论u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Colu003Eu003Cliu003E模拟赌博破产率高达83.3%,且有一半人在一年内破产;u003Cu002Fliu003Eu003Cliu003E因为赌博盈利的随机性,利润率并不高,说明赌博并不能作为一个发家致富的手段;u003Cu002Fliu003Eu003Cliu003E赢倒赌场的可能性几乎为0。u003Cu002Fliu003Eu003Cu002Folu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fdfic-imagehandleru002F187e7d08-5d1c-480a-8ad6-9778610529f6″ img_width=”1023″ img_height=”683″ alt=”用python做一个模拟实验,证明赌局总会十有九输” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。u003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:用python做一个模拟实验,证明赌局总会十有九输

主题测试文章,只做测试使用。发布者:逗乐男神i,转转请注明出处:http://www.cxybcw.com/12906.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code