P-1.2 模拟使用某种策略进行抛硬币赌博的结果
2018-01-05 18:54
183 查看
已知理论上在期望为0的赌博游戏时在大量进行后收支为0
但我不理性地想要测试一下,因为对于这个问题我比较感性
规则:现有起筹码点数n点,玩家进行一次押注后庄家展示一个随机产生的硬币结果,结果为若为正则玩家获得等同于押注额的点数,结果若为负则押注筹码归庄家
策略1:押注额为0,直到连续出现t次负的结果,此后押注c个筹码,只要结果为负,则押注f(e)个筹码,直到结果为正为止,其中e(for error),是结果连续为负的次数与t的差,意为失败的次数。f(e)是一个关于e的函数(可能为ce,c∈R )。当出现正的结果,则本次策略的执行结束,紧接着再次执行策略1。
对策略1模拟的实现:
使用Python
以下是一段运行结果
运行结果1:
对以上的运行结果进行这样的观察:
每一次代表扣除的输出中,从“扣”到“个”的长度与失败次数是成正比的。现在拥有的阶梯型的输出有着很好的直观。
运行结果2:
对以上的运行结果进行这样的观察:
通过改变失败函数使得失败投注额不再增加。
筹码额在程序运行初期是浮动于原值附近的,则投注额不增加时再次验证了P-1.1的结论是正确的。
对以上两次运行结果有这样的思考:
通过观察得到:在一个不考虑绿色0的“公平”轮盘赌中,只押红色,第一次押1元,第二次押10元,直到押中,在这个过程中,最终都赚到钱了。亏钱的概率是与投入的次数成反比的。而在对硬币随机数的观察中发现,连续出现多次(哪怕只是12次)同色的概率是很低的,很少见,所以估计,连续出现100次同色的概率是极低的,甚至是很难见到的(不理性地讲,是不可能出现的)。所以在公平的抛硬币游戏中,只要不断地且递进地投注,最终是极有可能(不理性地讲,是一定)能够收益的。当然,在轮盘赌中有1/37的概率命中0,但若将0视为同色结果,依旧是极有可能(不理性地讲,是一定)能够收益的。
总结
策略1最初的设想包含了P-1.1中的不理性猜测:硬币n次同面后第n+1次更有可能是异面的。但在策略1的验证中通过使初次投注失败后的投注额不增加,得到的验证结果依旧是支持P-1.1的结果的,筹码总额是大体不变的。但是策略1的验证中,结合对(0,1)随机结果的观察,可喜地,发现并验证了在简单抛硬币赌博游戏中更好的策略:在第k次投注失败后增加第k+1次投注额s.t.若第k+1次投注成功获得的收益=(前k次投注失败额的总和+一定的收益profit),p.s.其中profit是充足的,使人愉快的。当本金充分大时profit是任意的,当本金是有限的且不充分大时profit应当是递进而可接受的值。
以上,可以认为是由策略1总结归纳而出的策略2。
而策略2的代价是什么,还需要考虑甚至验证。
但我不理性地想要测试一下,因为对于这个问题我比较感性
规则:现有起筹码点数n点,玩家进行一次押注后庄家展示一个随机产生的硬币结果,结果为若为正则玩家获得等同于押注额的点数,结果若为负则押注筹码归庄家
策略1:押注额为0,直到连续出现t次负的结果,此后押注c个筹码,只要结果为负,则押注f(e)个筹码,直到结果为正为止,其中e(for error),是结果连续为负的次数与t的差,意为失败的次数。f(e)是一个关于e的函数(可能为ce,c∈R )。当出现正的结果,则本次策略的执行结束,紧接着再次执行策略1。
对策略1模拟的实现:
使用Python
switch=1 signal=0 counter=0 n=0 t=0 k=0 r=0 c=0 e=0 n=int(input('起始筹码个数:')) t=int(input('策略1:连续几次为负后开始投注:')) c=int(input('策略1:开始投注时起始投注数:')) k=int(input('请输入策略1失败函数f(e)=c^(e*k+1)中的k的值:'))#此处唯一的意义是体现修改函数的思想# import random while switch==1: r=random.randint(0,1) if signal==1: n=n-c**(e*k+1) print('扣除筹码',c**(e*k+1),'个,现有筹码',n,'个') if r==0: e=e+1 else: n=n+2*(c**(e*k+1)) print('获得筹码',2*(c**(e*k+1)),'个,现有筹码',n,'个') signal=0 e=0 else: if r==0: counter=counter+1 if counter==t: signal=1 counter=0 else: counter=0
以下是一段运行结果
运行结果1:
起始筹码个数:1000000 策略1:连续几次为负后开始投注:10 策略1:开始投注时起始投注数:10 请输入策略1失败函数f(e)=c^(e*k+1)中的k的值:1 ...... 扣除筹码 10 个,现有筹码 11177560 个 扣除筹码 100 个,现有筹码 11177460 个 扣除筹码 1000 个,现有筹码 11176460 个 扣除筹码 10000 个,现有筹码 11166460 个 获得筹码 20000 个,现有筹码 11186460 个 扣除筹码 10 个,现有筹码 11186450 个 扣除筹码 100 个,现有筹码 11186350 个 扣除筹码 1000 个,现有筹码 11185350 个 扣除筹码 10000 个,现有筹码 11175350 个 扣除筹码 100000 个,现有筹码 11075350 个 扣除筹码 1000000 个,现有筹码 10075350 个 获得筹码 2000000 个,现有筹码 12075350 个 扣除筹码 10 个,现有筹码 12075340 个 获得筹码 20 个,现有筹码 12075360 个 扣除筹码 10 个,现有筹码 12075350 个 扣除筹码 100 个,现有筹码 12075250 个 获得筹码 200 个,现有筹码 12075450 个
对以上的运行结果进行这样的观察:
每一次代表扣除的输出中,从“扣”到“个”的长度与失败次数是成正比的。现在拥有的阶梯型的输出有着很好的直观。
运行结果2:
起始筹码个数:10000 策略1:连续几次为负后开始投注:5 策略1:开始投注时起始投注数:10 请输入策略1失败函数f(e)=c^(e*k+1)中的k的值:0 扣除筹码 10 个,现有筹码 9990 个 获得筹码 20 个,现有筹码 10010 个 扣除筹码 10 个,现有筹码 10000 个 获得筹码 20 个,现有筹码 10020 个 扣除筹码 10 个,现有筹码 10010 个 扣除筹码 10 个,现有筹码 10000 个 扣除筹码 10 个,现有筹码 9990 个 获得筹码 20 个,现有筹码 10010 个 扣除筹码 10 个,现有筹码 10000 个 扣除筹码 10 个,现有筹码 9990 个 扣除筹码 10 个,现有筹码 9980 个 获得筹码 20 个,现有筹码 10000 个 扣除筹码 10 个,现有筹码 abc6 9990 个 获得筹码 20 个,现有筹码 10010 个 扣除筹码 10 个,现有筹码 10000 个 扣除筹码 10 个,现有筹码 9990 个 获得筹码 20 个,现有筹码 10010 个
对以上的运行结果进行这样的观察:
通过改变失败函数使得失败投注额不再增加。
筹码额在程序运行初期是浮动于原值附近的,则投注额不增加时再次验证了P-1.1的结论是正确的。
对以上两次运行结果有这样的思考:
通过观察得到:在一个不考虑绿色0的“公平”轮盘赌中,只押红色,第一次押1元,第二次押10元,直到押中,在这个过程中,最终都赚到钱了。亏钱的概率是与投入的次数成反比的。而在对硬币随机数的观察中发现,连续出现多次(哪怕只是12次)同色的概率是很低的,很少见,所以估计,连续出现100次同色的概率是极低的,甚至是很难见到的(不理性地讲,是不可能出现的)。所以在公平的抛硬币游戏中,只要不断地且递进地投注,最终是极有可能(不理性地讲,是一定)能够收益的。当然,在轮盘赌中有1/37的概率命中0,但若将0视为同色结果,依旧是极有可能(不理性地讲,是一定)能够收益的。
总结
策略1最初的设想包含了P-1.1中的不理性猜测:硬币n次同面后第n+1次更有可能是异面的。但在策略1的验证中通过使初次投注失败后的投注额不增加,得到的验证结果依旧是支持P-1.1的结果的,筹码总额是大体不变的。但是策略1的验证中,结合对(0,1)随机结果的观察,可喜地,发现并验证了在简单抛硬币赌博游戏中更好的策略:在第k次投注失败后增加第k+1次投注额s.t.若第k+1次投注成功获得的收益=(前k次投注失败额的总和+一定的收益profit),p.s.其中profit是充足的,使人愉快的。当本金充分大时profit是任意的,当本金是有限的且不充分大时profit应当是递进而可接受的值。
以上,可以认为是由策略1总结归纳而出的策略2。
而策略2的代价是什么,还需要考虑甚至验证。
相关文章推荐
- elasticsearch聚合操作——本质就是针对搜索后的结果使用桶bucket(允许嵌套)进行group by,统计下分组结果,包括min/max/avg
- 使用Spring AOP对url参数进行解密以及对返回结果进行加密
- SharePoint2016如何使用策略进行文档归档
- LR使用web_add_cookie函数进行cookie模拟
- USB设备,鼠标,键盘使用CH372,CH375,进行模拟的历程
- 互联网进行限流策略的Semaphore信号量使用
- 使用模拟对象(Mock Object)技术进行测试驱动开发
- 在Spark中使用UDF对HIVE表进行查询,再将查询结果RDD写入另一个HIVE表
- K-Means算法过程及代码实现,并对结果使用ARI进行评估
- 使用CocoaPods进行开发的一些问题及策略
- PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
- ArcGIS API for Javascript 使用缓冲区结果做query查询出现“esri.config.defaults.io.proxyUrl 尚未进行设置”错误
- Mybatis使用MySQL进行查询时设置中文检索不到结果
- 使用moogoDB进行模糊查询查不出结果
- 使用python3进行12306模拟登陆下单流程
- 使用面向对象的方式模拟TOM使用ATM进行存取款的操作
- Mybatis使用MySQL进行模糊查询时输入中文检索不到结果
- 使用Java的Lucene搜索工具对检索结果进行分组和分页
- Windows 8下 GNS3模拟ASA,接入物理网络并使用ASDM进行管理
- 问题:Oracle 树形遍历;结果:使用oracle进行遍历树操作