2007年5月9日 星期三

哪種方法好?

有一隻大怪物出現在你面前,十秒內就可以把你幹掉。所以,你得在十秒內把它解決。你可以用小刀刺它:速度比較快,但是效果也比較差,要刺中六下才能解決它。或是,你可以用球棒,速度比較慢,但是效果比較好,只要打中三下就夠了。哪種方法比較好?

假設球棒的速度正好是小刀的一半,那麼,看起來似乎沒什麼差別,因為小刀刺中六下所需要的時間,和球棒打三下是一樣的。不過,這是假設每一下都能打中。如果有一個固定機率會沒打中的話,情形似乎就不同了。

如果十秒的時間,剛好可以用小刀刺十下,或是用球棒打五下。那麼,直覺來看,似乎用小刀「比較安全」,因為就算偶而沒刺到,也有比較多次機會可以補救。但真的是這樣嗎?

為了簡單起見,先假設,打中的機率和打不中的機率是一樣的(各為 50%)。這麼一來,這個問題就變成:丟五次硬幣,至少出現三次正面,和丟十次硬幣,至少出現六次正面,比較哪種方法的機率高。

丟五次硬幣中出現至少三次正面的機率是 (1 + 5 + C(5, 2))/2^5 = 16/32 = 50%。丟十次硬幣中出現至少六次正面的機率是 (1 + 10 + C(10, 2) + C(10, 3) + C(10, 4))/2^10 = 386/1024 ~= 38%。所以,如果打中的機率只有 50% 時,用小刀反而不好,看起來「直覺」好像是錯的。

不過,如果打中的提率提高了,會有什麼影響?設打中的機率是 p,則五次打中至少三次的機率是:

p^5 + 5p^4(1-p) + C(5,2)p^3(1-p)^2

如果 p = 0.9 則機率是 99.144%。

十次中打中至少六次的機率是:

p^10 + 10p^9(1-p) + C(10,2)p^8(1-p)^2 + C(10,3)p^7(1-p)^3 + C(10,4)p^6(1-p)^4

如果 p = 0.9 則機率是 99.836%。

也就是說,如果打中的機率提高到 90%,則使用小刀反而是比較好的方法。直覺畢竟是對的 (?)。

當然,認真來說,哪種方法比較好,和 p 有很密切的關係。也就是說,如果你打中怪物的準度不夠,就應該打少次一點,期待運氣好每次都命中。但是如果準度夠,就可以選擇打多次一點,比較「保險」。

3 則留言:

Kaylen Cheng 提到...

燃燒吧腦細胞~~
我對數字實在是不行,更別說是數字遊戲了 XD~
話說回來,好久沒更新了耶 Orz...

朱利安 提到...

我會選擇轉身逃跑。 XD

oh~ ya~ 又有更新了...

Iris 提到...

您好:

非常喜歡您的網站:http://www.csie.ntu.edu.tw/~r89004/hive/mipmap/page_4.html,圖文並茂,讓初學者的我都可以比較容易弄懂~

在此冒昧的請教您,是否會寫有關Anisotropic filtering的作法以及理論呢?

我剛開始學3D,最近要開始看D3D的 vertex shader, pixel shader…

不過對這方面尚無具體瞭解~

不知從和著手(SDK講的很雜…)

若是您願意整理,或是推薦我一些較淺顯易懂的相關說明~

不勝感激!

敬祝安康~



3D初學者:Iris 敬上