每日10行代码48:翻倍投注模拟,以猜硬币为例证明翻倍投注是行不通的

现实中经常看到新闻,有人玩网上买私彩亏了很多钱,其中里面的“玩彩老师” 的常用一个套路就是不断的翻倍投注,比如猜硬币,我一直猜正面,如果不中就翻倍投,中了就继续按1倍来投。
假如我第一次押1块钱,中了我赚1块,不中亏1块,如果第一次不中,我第二次就押2块,如果还不中,我第三次就押4块,依次类推。
理论上如果钱足够多的话,这种玩法肯定是赚钱的。但是现实中哪有可能钱足够多。今天我用代码模拟了下用100块钱去玩这个游戏的结果。

from random import *
bet_rslt = True
bet_amt = 0.5
money = 100  # 初始金钱

def bet():
    global bet_rslt,bet_amt,money
    
    # 本次投注金额
    if bet_rslt:
        bet_amt = 1
    else:
        bet_amt = min(2*bet_amt, money)

    # 本次投注结果
    bet_rslt = (1==randint(0,1))

    # 本次投注后剩余金钱
    money = money + bet_amt if bet_rslt else money - bet_amt


def bet_times(n):
    global bet_rslt,bet_amt,money
    for i in range(1,n+1):
        #print(f"开始第{i}次投注")
        bet()
        #print(bet_rslt,bet_amt,money)
        if money == 0:
            break
    result = (i,money)

    # 恢复初始值
    bet_rslt = True
    bet_amt = 0.5
    money = 100  # 初始金钱
    return result

for _ in range(0,10):   # 测试10次
    print(bet_times(100))

输出结果:

(100, 131)  # 第一个数是投注次数,第二个数是最后的总金额
(100, 157)
(100, 153)
(23, 0)
(82, 0)
(100, 23)
(100, 150)
(36, 0)
(18, 0)
(100, 160)

从上面结果看,这样玩10局,每局玩100次或者玩到输光,那么有5局是赚的,有1局亏了77,还有4局会亏光。
当我把初始金额加到1000,玩10局

(100, 1059)
(100, 1049)
(100, 1049)
(100, 1051)
(100, 1045)
(100, 1045)
(100, 1057)
(100, 1041)
(100, 1044)
(100, 1055)

这样看,随机了10局都是赚的,但是平均赚了50左右,相对于1000就是5%,但是如果玩的局数够多的话,就会碰到输光的情况。为了5%的利益而冒着输光的风险,这是很不值的。

ps: 感觉代码写的不够优雅,尤其是两次赋初始值,还有在函数内部修改外部变量的做法也不够好,望有人看到了能给我提提意见。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值