现实中经常看到新闻,有人玩网上买私彩亏了很多钱,其中里面的“玩彩老师” 的常用一个套路就是不断的翻倍投注,比如猜硬币,我一直猜正面,如果不中就翻倍投,中了就继续按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: 感觉代码写的不够优雅,尤其是两次赋初始值,还有在函数内部修改外部变量的做法也不够好,望有人看到了能给我提提意见。