假設你是一位男孩,而上天在你20-30歲間安排了20位適合你的女孩。這些女孩都願意作為你的伴侶,但你只能選擇他們其中乙個。選擇的條件如下:
對於你來說,這20位女孩是可以排序的,也就是說事後你可以對她們的質量進行排名,排名第一的女孩對你來說就是最好的,排名第二十的對你來說就是最差的。
這20位女孩不是同時出現在你的生命中,而是按照時間順序先後出現,每出現乙個你都要決定留下還是拒絕。如果留下她,她就會成為你的終身伴侶,你將沒有權利選擇後面的女孩;如果你拒絕,你還可以選擇後面的女孩,但是對前面已經拒絕的女孩就沒有機會從頭再來。
假設上天是完全隨機安排各個時間段出現的女孩,即出現的時間先後和女孩的質量完全沒有關係。那麼,你應該在什麼時候決定接受一位女孩,並使得被接受的那位女孩屬於最好女孩的可能性最大呢?
策略1:事先抽籤,抽到第幾個就第幾個。比如,抽到第10位,那麼第10個在你生命中出現的女孩就事前被確定為你的伴侶。而她剛好是最好的女孩之概率是多少呢?答案是1/20=0.05。這種策略使你有5%的可能性獲得最好的女孩。這樣的概率顯然太小
我們有沒有比較好的策略以更大的概率找到最好的女孩呢
策略2:取某個中間點n,如果在這個中間點之前無論女孩怎麼樣都不會考慮,到第n個時就會正式考慮了,如果當前女孩比以前的都好,那麼就選為終生伴侶,否則放棄,從下乙個繼續選。這也比較符合我們日常的做法。那麼這個中間點n該怎麼確定才能是概率最大,我們接下來分析一下
假設第k個女孩是最好的,概率為1/20,當我們從n開始正式考慮時要想找到最好的女孩,需要k>n,也就是說最好的女孩在第n個之後。這樣還不能保證一定能找到最好的女孩,因為我們的策略是從n開始,如果當前的比以前所有的都好,就會選擇。所以要想在n之後k之前的都不選,那麼需要在k之前最好的女孩出現在n之前,這樣就不會選擇從n到k-1之間的任何女孩。這樣的話第k個女孩是最好的女孩並且k之前最好的女孩出現在n之前的概率為 1/20*(n-1)/(k-1) ,其中k的取值為[n,20],所以從n開始正式考慮能找到最好女孩的概率為:
用c++程式設計求出n從1到20的概率
[cpp]view plain
copy
#define girlnum 20//女生個數
[cpp]view plain
copy
void
theory()
pro=pro/20;
cout "
<
} }
執行結果如下:
從結果中可以看出,從第八個開始考慮時概率最大,為38.42%
接下來我從統計的角度驗證一下上述結果,c++源**如下:
[cpp]view plain
copy
#include "stdafx.h"
#include
#include
using
namespace
std;
#define girlnum 20 //女生個數
#define testnum 1000000 //樣本個數
//隨機生成girlnum個女孩的排列
void
generate(
int* girl)
//與當前元素之後的某個元素交換
for(
intj=0;j
} void
statistics()
} if
(bestgirl
} //如果選擇是最好的,則記錄下來
if(selectgirl==girlnum-1)
} } for
(int
m=0;m
} 實驗中樣本個數為100萬,結果如下:
結果顯示,從第八個開始考慮,概率最大,為38.42%,和上面理論論述的結果是一樣的
ps:由於隨機函式並不是真正的隨機,得到的結果和理論結果稍有誤差
**:
追女孩最好時機啊
有自己喜歡的女孩子嗎?想讓她對你動以真情嗎?是不是你嘗試了很多卻失敗連連?別放棄噢,這裡貓貓給你全新推薦了21種容易成功的時刻,希望你繼續努力,不要放棄。一 當女孩子單獨與男孩子接觸時,最容易動心.男孩子應抓住這一時機表示出積極主動 如果有第三者在場,她們通常會斷然拒絕男孩子,以掩飾自己的真實感情....
追女孩最好時機啊
有自己喜歡的女孩子嗎?想讓她對你動以真情嗎?是不是你嘗試了很多卻失敗連連?別放棄噢,這裡貓貓給你全新推薦了21種容易成功的時刻,希望你繼續努力,不要放棄。一 當女孩子單獨與男孩子接觸時,最容易動心.男孩子應抓住這一時機表示出積極主動 如果有第三者在場,她們通常會斷然拒絕男孩子,以掩飾自己的真實感情....
如何追女孩
1 我認為最關鍵的,是要讓mm看到你的上進心。男人的最大魅力在於事業有成,年輕人工作時間不長談不上 有 成 這時候你就要讓mm 覺得你是個有上進心的人。別的可以胡說八道,但這個問題不能含糊,你一定要告訴mm,你 對未來充滿信心,你不滿足於現狀,並且你已經有了長遠的計畫,總之 你的未來不是夢。2 要顯...