Python模拟赌博实验

作者:dalalaa

http://www.jianshu.com/p/2d919a028600

概述

  • 前言

  • 实验思路

  • 实验步骤

  • 统计数据

  • 结论

  • 阿广说

  • 福利一刻

  • 推荐阅读

前言

在知乎上看见这么一个问题:既然赌博每局的胜率为50%,为何最终有那么多人会赌到倾家荡产?

似乎挺有道理的,有人就是想不通,胜率50%,长期应该是各有胜负,为何会有人倾家荡产,对于这个问题我们不妨用Python做一个模拟实验。


实验思路

  1. 赌博方式设定为玩骰(这字念tou、二声,意不意外)子、猜大小,一天赌一次,每局一庄一闲,直到闲家输光或者赌场下班(假设赌场也会下班);

  2. 赌徒认为胜负是纯运气时间,坚信不可能把把开大(或开小),所以在连输三把之后,赌徒会加注50%;

  3. 赌徒共有一百万元存款,第一次参加赌局会携带两万元现金;

  4. 赌徒输光存款之后会尝试借高利贷扳本(保守估计月利率5%,国家规定的高利贷利率上限3%,据说赌场高利贷会高很多,具体多少不明);

  5. 借高利贷之后第二天立即归还(一般赌徒很少还钱这么快的,假设我们模拟的是一个“自律”的赌徒)。


实验步骤

  • 创建人物

class gambler():def __init__(self):self.deposit = 1000000  # 百万存款,这里不考虑不动产self.bet = 20000  # 赌资self.usury = 0  # 借贷self.lose = 0  # 连输局数
Cathala = gambler()#赌博商人卡达拉
Cathala.bet = 100000000
Cathala.deposit = 100000000
Geralt = gambler()#Geralt是一名狂热的赌博爱好者

  • 创建赌局

今天我们不玩昆特牌,玩色子。

就是这个靠运气的游戏,下面是赌局的函数实现:

bet = 1000#每一把1000块
count = 0
gambling_list = []#记录每局比赛的输赢
def gambling(gambler_a,gambler_b,bet,count):#a是庄家,b是闲家,bet是当局赌注,count是当前的赌局编号point = random.randint(2, 12)  # 骰子点数guess = random.randint(0, 1)  # 猜大小,0为小,1为大if (point > 7 and guess == 1) or (point <= 7 and guess == 0):  # 猜对了Geralt.bet += betCathala.bet -= betreturn Trueelse:Geralt.bet -= betCathala.bet += betreturn False
  • 是男人就玩100局

def One_day_gambling():Geralt.bet = 20000bet = 1000count = 0while True:gambling_list.append(gambling(Cathala, Geralt, bet,  count))count += 1if count > 3 and gambling_list[count - 3] == gambling_list[count - 2] == gambling_list[count - 1] == False:bet = bet * 1.5#连输三局加赌注,加完之后如果还输继续加,赢了赌注保持不变if Geralt.bet <= -5000 or count >= 100:#每天最多只敢借五千的高利贷,每天最多100局,其实大部分都玩不到100局就输光了breakreturn Geralt.bet-20000#返回每天独居结束时的负债或盈利
  • 然后我们把每天的输赢都记录下来,最后统计一下有没有破产。

def record_daily_gambling():debt = []#记录每一天的最终盈亏for i in range(3000):n = One_day_gambling()if n<0:#小于零就要借高利贷了,计一天的利息n = n*1.00167debt.append(n)if sum(debt) <= -1000000:#一百万输光算破产return (sum(debt),i)#破产后记下最终输掉的资金,以及破产时间return (sum(debt),3000)#一直没有破产的人def main():every_example = pd.DataFrame()lost_money = []bankrupt_time = []for j in range(1000):m = record_daily_gambling()lost_money.append(m[0])bankrupt_time.append(m[1])print(j)every_example['lost_money'] = lost_moneyevery_example['bankrupt_time'] = bankrupt_timeevery_example.to_csv('experiment_data.csv',index=False,sep=',')if __name__ == "__main__":main()


统计数据

总共模拟了1000人,其中未破产的有167人(其中亏损3人,盈利164人),破产833人,破产率83.3%,基本上最后都破产了,我们看看大家各自的破产时间吧。

破产时间分布

那么最后没有破产的人呢?最终盈利多少呢?

未破产人员的八年总盈利

其中最富有的赢了1250万,一千万以上的只有六个。看起来很多对吧,我们继续往下看。这是中国这近十年的通货膨胀率(官方数据):

近十年通货膨胀率

但是实际通货膨胀率要比官方数据(根据居民消费指数)高得多(十年前两块钱一个的肉夹馍如今已经要十块钱了,按3%算,现在肉夹馍应该卖两块7毛钱~),为何会有这么大偏差呢,因为国家统计的CPI(居民消费指数)还是采用的1997年以前的标准,没有将买房支出算入CPI中。

网上查到的认可度比较高的说法是近十年的通货膨胀率已经达到了13%,暂且按13%计算的话,8年后的1250万仅相当于今天的553万,1000个身家100万的人,没日没夜地扑在赌桌上,花了八年时间,最多的一个人也只挣了553万。

结论

  1. 模拟赌博破产率高达83.3%,且有一半人在一年内破产;

  2. 因为赌博盈利的随机性,利润率并不高,说明赌博并不能作为一个发家致富的手段;

  3. 赢倒赌场的可能性几乎为0。


阿广说

赌是追求财富的一种极端表现。几个朋友告诉我说,赌起来可真放松啊!别管是打麻将还是填大坑,在他们眼中都是一种休息。其实,有几个赌博之人不在乎输赢?赢了便笑逐颜开,输了便垂头丧气。赌博过程中的欢娱和放松指示在追求财富过程中的附属品。

赌是一种在极短时间内做出选择和判断的投资行为。人是理性地,可是在赌桌上,没有人能够理性起来。看过《南方周末》上的一篇报道,某个在澳门赌场以介绍客人抽取佣金为生的人士接受采访说,任何一个家产上亿的富豪,两年左右时间就能够在赌场败光全部家当。换句话说,就是无论你多有钱,也只够在赌场挥霍最多两年。亿万富豪的智商情商肯定不会低,否则不会发大财。那他们为什么会输的一败涂地?一是因为赌赢是一种小概率事件,发生的机会很低。二是赌博活动的参与门槛很高,不豪掷千金根本无法上桌,所以只好硬着头皮参与这种小概率事件。三是面对瞬间唾手可得的10倍、100倍、1000倍乃至10000倍的投资回报,任何理性人都变得不理性。这种不理性不是指没有头脑,而是不可能在短时间内做出科学分析。在如此规则之下,成功的概率可想而知。

赌是人们追求精神自由的一种方式。我们都在渴求人生三大自由:财务自由——时间自由——精神自由。可是,绝大多数人穷一生之力连财务自由也难以实现。那么,赌博则是大家快速实现跨越式发展的最佳选择。作为社会的一份子,每个人都生存在规矩之中:法律、法规、道德、伦理等等始终约束你的选择和行为。每个人都生活在现实之中,要量入为出,否则下半个月会揭不开锅;要适可而止,否则明天上班起不来床。如此受束缚久了,谁都会厌倦,谁都会压抑,谁都想放松。赌博则可以满足这方面的需求,让你不理性一次:不用考虑那么多做出选择;让你放纵一次,没有那么多规矩束缚着你。所以有人说“小赌怡情”。跟赌博类似的,比如吸毒行为,也是让人神魂颠倒,忘记自己是谁,获得短暂的放纵。

有很多人说,小赌怡情大赌伤身,我却并不这么认为,赌博就是赌博,没有所谓的大小之分,只要有赌注,只要涉及到钱,都会伤身,不但伤己,还会伤人。

福利一刻

视学算法特此感谢电子工业出版社的独家赞助,近期电子工业出版社出版《你也能看得懂的Python算法书》。此前,本书正处于预售状态。

近期视学算法将和电子工业出版社联合赠送若干本,包邮免费送!敬请关注!

推荐阅读

如何边玩游戏边学Python?

Python模拟赌博实验,赌博为什么能赌到倾家荡产?相关推荐

  1. python投掷骰子实验_Python小程序--模拟掷骰子

    案例描述 · 通过计算机程序模拟抛掷骰子,并显示各点数的出现次数及频率 · 比如,抛掷2个骰子50次,出现点数为7的次数是8,频率是0.16 版本1.0 1.0功能:模拟抛掷1个骰子,并输出其结果 如 ...

  2. 利用Python模拟鼠标自动完成MM32-LINK程序下载

    简 介: 编写了利用Python控制MM32-LINK自动下载程序,这可以减少在开发过程中的操作. MM32-LINK在打开程序过程中,对话框的标题出现错误,"Load form file& ...

  3. 贪吃蛇程序设计报告python_20192116 2019-2020-2 《Python程序设计》实验四报告

    20192116 2019-2020-2 <Python程序设计>实验四报告 课程:<Python程序设计> 班级: 1921 姓名: 饶欢 学号:20192116 实验教师: ...

  4. python模拟抛硬币_python实现简单随机模拟——抛呀抛硬币

    还是在上次提到的数据之魅那本书,看到模拟这章,有个python模拟脚本,但书上不全,就自己简单写了下. 流程:在不同的平衡参数p(为0.5时为均匀的)下,模拟60次实验,每次投硬币8次,统计正面朝上的 ...

  5. 使用Python模拟男人在长椅上选择座位的过程

    问题描述:研究发现,男人在候车厅之类的场合选择长椅上的座位休息时,一般倾向于选择最长空座位串的中间位置.例如下面的过程(x表示有人,_表示没有人): _________x_________ ____x ...

  6. python机器视觉教材_基于Python的机器视觉实验教学平台设计

    基于 Python 的机器视觉实验教学平台设计 韩志豪 ; 刘晓英 [期刊名称] <计算机测量与控制> [年 ( 卷 ), 期] 2020(028)003 [摘要] 针对机器视觉领域的学习 ...

  7. python实验报告_20193102 实验一 《python程序设计》实验报告

    原博文 2020-04-11 22:19 − # 20193102 2019-2020 <python程序设计>实验1报告 课程:<python程序设计> 班级:1931 姓名 ...

  8. PYTHON第二次实验

    PYTHON第二次实验 实验2.1 批量生成姓名.家庭住址.电子邮箱等随机信息 一.实验目的 熟练运用标准库random中的函数 了解标准库string中的字符串常量 了解汉字编码格式 熟练掌握文本文 ...

  9. 新冠病毒爆发如何预防?用Python模拟病毒应对策略(附代码)

    2019年末,在中国武汉爆发的冠状病毒疫情冲击了整个金融市场和实体经济.这座总人口超过千万,春运期间流动人口超过500万的巨型城市的灾难在世界各地引发了一连串蝴蝶效应,也在全球普通民众中引发恐慌. 武 ...

最新文章

  1. 手机webapp meta标签 (全屏)
  2. 20165303实验一 Java开发环境的熟悉
  3. Big Sur恢复Catalina ? macOS Big Sur降级的三种方法 !
  4. php 判断美国zip code
  5. ORTP库API使用入门
  6. python编程总结
  7. ios 团购信息客户端demo(一)
  8. 含重根的三阶实对称矩阵的快速对角化方法
  9. python modbus_tk模块学习笔记(rtu slaver例程)
  10. linux 指令熟悉
  11. python中turtle画小草_python 笔记 之带参数的装饰器
  12. 一招,提高 Github 成员微信群运营效率
  13. python设置颜色_使用python改变颜色的色调
  14. pip install -t的意思
  15. 应届生什么专业方向就业面广?
  16. C++——set基本操作总结
  17. Linux安装和使用Trickle的方法
  18. php+laravel+百度智能云人脸识别详解
  19. 周志朋java_java中堆和垃圾回收机制的介绍
  20. 南宁小程序开发,挑战百日学习计划第47天(canvas画板工具1)

热门文章

  1. 小撒、金晨都想拥有!百度全球首款汽车机器人亮相,车内躺着看星星
  2. 我发现了个Python黑魔法,执行任意代码都会自动念上一段「平安经」
  3. TensorFlow、PyTorch夹缝之下:后浪的进击和野望
  4. AutoML前沿技术与实践经验分享 | 免费报名
  5. 十问陆奇:努力、能力和机遇,谁能帮你跑赢未来?
  6. 英伟达Q4净利同比降49%,还能继续躺赚吗?
  7. 《中国人工智能ABC人才发展报告》发布,算法和应用类人才短缺
  8. 人类间谍快“混”不下去了,CIA 打算用 AI 替代他们
  9. 清北浙交大比拼,南大强势上榜,AI到底哪家强?
  10. 记一次性能优化,单台4核8G机器支撑5万QPS