原題在這裡

如果在一個賭場裏,每次下注的金額都是之前輸的金額的2.5倍,只要贏一把就可以翻本,是不是必贏???

www.zhihu.com
圖標

我特意用R寫了段代碼來說明這個問題。

在題主原來的問題上,為了儘可能真實,我們構造一個每晚去賭場賭博的場景!關於具體賭博遊戲呢,其實什麼都可以,這不是關鍵所在。為了簡單,我們只考慮一種規則,那就是:單次遊戲裏,投注x元,贏了拿回本金加x元,輸了呢就輸掉本金x元。

我還必須要加上兩個條件

  1. 本金不是無底洞!每晚只帶有限本金,輸光就只能回家
  2. 一晚上單次遊戲不能玩無限次,也有最多限制(你就是打麻將一晚上能搓多少圈?)

這裡還要準確定義一下什麼是單次遊戲:

  1. 第一局下注一元
  2. 一旦實現正的盈利(哪怕一元),或者輸光當晚攜帶的本金,就立即終止本次遊戲
  3. 每一次下注都是前面輸的金額總和的2.5倍。

程序在下面

gamble <- function(principal, prob){
# 這個函數代表一次遊戲!
# 我們輸入兩個數
# principal 你攜帶的本金數,不可以賒賬
# prob 你每次賭博贏的概率

profit = 0 # 這個變數代表你的盈利情況,一開始是零

# 這個循環條件很直觀
# 當你本次遊戲欠債超過的你攜帶的本金,今晚遊戲結束,你光著屁股回家
# 另外,當你本次遊戲一旦盈利,就立即退出這個函數,並開始下一個遊戲
while(profit + principal > 0 && profit <= 0){
if(profit == 0) bet = 1 #初始下注一元
else bet = -profit * 2.5 #初始之後每次下注都是損失的錢乘以2.5

if(runif(1) < prob){
# 如果你贏了
profit = profit + bet
}else{
# 如果你輸了
profit = profit - bet
}
}
# 最後,本次遊戲結束,返回你的盈利
return(profit)
}

# 這裡調節你今晚攜帶的本金數
principal = 100
# 這裡調節你今晚最多可以玩幾次遊戲
# 一百屬於比較正常的
n_times = 100

# 這個會存下所有結果
sums = NULL

# 為了你可以重複實驗結果而設定的種子
set.seed(0)

# 讓我們調整時光機,重複今晚5000次
for(nter in 1:5000){
# 開始整個遊戲,sum是你的當前總盈利
sum = 0
# 今晚你最晚只能玩一百次遊戲
for(iter in 1:n_times){
# 總盈利是單次遊戲盈利之和
sum= sum + gamble(principal,.5)
# 如果你的總盈利欠債把本金都輸光了
# 剩下的遊戲也別玩了,回家吧!
if(sum + principal < 0) break
}
sums = c(sums, sum)
}

hist(sums)
summary(sums)

把代碼複製粘貼到R裏試試就知道了。

最後會得到這樣一張直方圖

相關統計量自己看吧。

可以看出五千個晚上,超過半數是輸光了打了欠條回家的。而盈利超過800的是極少數極端情況。這還是在獲勝概率為二分之一的公平遊戲前提下。總體的平均盈利雖然是正的,但是是可憐個位數六元不到。。。你有五千個晚上每晚100的本金,做點什麼投資不比這個回報率高啊?


然後讓我們假設題主是富二代,有個願意每晚給他10000元去賭博的好爸爸,還連續給5000個晚上,跑程序如下

gamble <- function(principal, prob){
# 這個函數代表一次遊戲!
# 我們輸入兩個數
# principal 你攜帶的本金數,不可以賒賬
# prob 你每次賭博贏的概率

profit = 0 # 這個變數代表你的盈利情況,一開始是零

# 這個循環條件很直觀
# 當你本次遊戲欠債超過的你攜帶的本金,今晚遊戲結束,你光著屁股回家
# 另外,當你本次遊戲一旦盈利,就立即退出這個函數,並開始下一個遊戲
while(profit + principal > 0 && profit <= 0){
if(profit == 0) bet = 1 #初始下注一元
else bet = -profit * 2.5 #初始之後每次下注都是損失的錢乘以2.5

if(runif(1) < prob){
# 如果你贏了
profit = profit + bet
}else{
# 如果你輸了
profit = profit - bet
}
}
# 最後,本次遊戲結束,返回你的盈利
return(profit)
}

# 這裡調節你今晚攜帶的本金數
principal = 10000
# 這裡調節你今晚最多可以玩幾次遊戲
# 一百屬於比較正常的
n_times = 100

# 這個會存下所有結果
sums = NULL

# 為了你可以重複實驗結果而設定的種子
set.seed(0)

# 讓我們調整時光機,重複今晚5000次
for(nter in 1:5000){
# 開始整個遊戲,sum是你的當前總盈利
sum = 0
# 今晚你最晚只能玩一百次遊戲
for(iter in 1:n_times){
# 總盈利是單次遊戲盈利之和
sum= sum + gamble(principal,.5)
# 如果你的總盈利欠債把本金都輸光了
# 剩下的遊戲也別玩了,回家吧!
if(sum + principal < 0) break
}
sums = c(sums, sum)
}

hist(sums)
summary(sums)

直方圖在這裡

雖然比上面那張圖好看一些,但只是在說,超過半數是基本上不輸不贏的。但請注意,有超過五百次以上是帶著一萬去然後光著屁股回家的。。。五千次平均盈利是146元。。。你可是揣著一萬元去的。。。10000元本金只賺了146,回報率只有1.46%,還是用了五千個晚上,年化回報率只有 0.1%... 做點什麼不好啊?


有沒有發現什麼規律呢?有!

  1. 在其他條件不變的前提下提高本金,其實就是等價於提高賭博的「容錯率」,或者說,讓你可以多輸幾次不至於打道回府,這可以顯著減少虧光回家的次數。
  2. 但是無論如何減少虧光回家的次數,都無法改變一個現實,那就是,虧光了回家的次數肯定比贏錢回家的次數多,而贏大錢永遠是小概率事件。
  3. 如果遊戲公平,勝率在50%,長期平均盈利可以不虧,但是,這肯定是一種很差勁的投資,負盈利嚴重肥尾,期望回報還巨低,所以只能是大資本才能做的事,可是大資本也不會願意做這個。。。

所以,這遊戲不好玩。。。

推薦閱讀:

相關文章