聖彼得堡悖論,期望與實際相差為何這麼大?
知乎首問
關於聖彼得堡悖論,知乎,百度百科似乎都有解答,但我看來那些回答針對的是為什麼人們不願花很多錢玩一次這個遊戲?而我想問的是為什麼計算機多次模擬(10^9次甚至更多)得出的平均距離期望這麼遙遠?聖彼得堡悖論:(直接摳百科)設定擲出正面或者反面為成功,遊戲者如果第一次投擲成功,得獎金2元,遊戲結束;第一次若不成功,繼續投擲,第二次成功得獎金4元,遊戲結束;這樣,遊戲者如果投擲不成功就反覆繼續投擲,直到成功,遊戲結束。如果第n次投擲成功,得獎金2的n次方元,遊戲結束。 第n次結束的概率是,收益是,期望收益是1
所以總的期望收益應該是然而我用C++打了個程序模擬(因為線性同餘法周期太小,我用的是梅森旋轉)10^9次,得出來的平均只有幾十。以下代碼:
#include&
#include&
#include&
#include&using namespace std;
bool isInit;
int index;
int MT[624]; //624 * 32 - 31 = 19937
long long sum,t,k,x,y,T ;
int cnt[101] ;
double lld[101],Sum ;void srand(int seed)
{
index = 0;
isInit = 1;
MT[0] = seed;
for(int i = 1; i &< 624; i++) { int t = 1812433253 * (MT[i - 1] ^ (MT[i - 1] &>&> 30)) + i;
MT[i] = t 0xffffffff;
}
}void generate()
{
for(int i = 0; i &< 624; i++) { int y = (MT[i] 0x80000000) + (MT[(i + 1) % 624] 0x7fffffff); MT[i] = MT[(i + 397) % 624] ^ (y &>&> 1);
if (y 1)
MT[i] ^= 2567483615ULL;
}
}int rand()
{
if(!isInit)
srand((int)time(NULL));
if(index == 0)
generate();
int y = MT[index];
y = y ^ (y &>&> 11);
y = y ^ ((y &<&< 7) 2636928640ULL); y = y ^ ((y &<&< 15) 4022730752ULL); y = y ^ (y &>&> 18);
index = (index + 1) % 624;
return y;
}int main() {
以下是模擬的結果:
lld[1] = 0.5 ;
for (int i = 2 ; i &<= 100 ; i++) lld[i] = lld[i - 1] / 2 ; freopen("a.txt","w",stdout) ; for (int TTT = 1 ; TTT &<= 100 ; TTT++) { T = 10000000 ; srand(time(NULL) + rand()); sum = 0 ; Sum = 0 ; for (int i = 1 ; i &<= T ; i++) { t = 1 ; k = 2 ; while (1) { x = rand() ; y = rand() ; if (x &< y) { t++ ; k &<&<= 1 ; } else if (x &> y) {
break ;
}
}
cnt[t]++ ;
sum += k ;
if (sum &< 0) { cout &<&< "ERROR" ; return 0 ; } Sum += double(t) ; } printf("%.8lf ",(double(sum) / T)) ; } }每個小格是10000000次模擬的平均值
這裡每次獨立實驗的期望都是無窮,所以一般的強大數定律確實用不了。
但是有一條特殊的大數定律,可以適用於這裡。所以這裡的樣本均值滿足是沒有問題的,但是經過你的模擬可以發現,發散到無窮的速率比較慢。於是我們可以考慮更精細一點的刻畫。
這裡我們有(注意這裡是是converge in probability,而不是之前的converge almost surely)。於是我們知道,隨著n的增大,在大概率意義下和是同一數量級的。這一點與模擬結果是吻合的。參考資料:[1]Probability:Theory and Examples - Durrett[2]A Probability Path - Resnick大數律要求期望存在且有限。
兄弟,按這種出法,出1,2,4然後贏8元,你是不是只賺了1塊錢?
額……這樣一個嚴肅的問題,題主不去知網看論文,跑來知乎問,似乎不太妥當吧……推薦題主去知網搜論文。一搜索聖彼得堡悖論就有很多文章出現,題主可以看一下哪些是對自己有幫助的。我搜到的一篇名為《聖彼得堡悖論的消解與決策學意義反思》的論文,裡面就說到了對於題主提出的問題的很多解釋,也分析了各種解釋的缺陷。還有很多其它的論文,題主也可以看一看。
有一個賭博的帖子裡面一個自稱數學系的朋友提到了一個「必勝賭法」,就是每次賭上一次的兩倍。別人這個帖子下面有個回復我很喜歡。大概意思就是,很快,沒等你賭贏之前,你就沒錢再下一次了。
直觀來看,是因為試驗次數太少。通過樣本數不夠充分的統計來對概率(模型)較低的事件的概率(真實)進行估計,得到的結果不夠準確。
推薦閱讀:
※Windows電腦應當採取什麼散熱策略和安全策略?
※計算機模擬的無法解決一個BUG,這是什麼理論?
※catia,ansys,fluent電腦需求?
※假設一台量子計算機可以模擬自大爆炸開始的宇宙,那麼這台電腦能模擬出(預測)未來嗎?(詳見描述)?
※國家軟考的高級項目管理師證書有啥用?據說公司在申請大項目時需要有這樣的資質,聽說還可以掛靠什麼單位,有高人了解嗎