原問題是這樣的:
玩某遊戲中,乙個boss死亡之後會隨機掉落物品,一共有四種物品可能會掉落,boss每次死亡之後都會掉落一種物品,四種物品掉落的概率完全相同。
現在需要收集其該boss掉落的四件物品,完成某項任務。問:平均要殺死該boss多少次才能湊滿全部4個物品。
該問題實際上就是求boss掉落全部四個物品的數學期望,數學期望為值和概率之積的全和。
即s=4*p(4) + 5*p(5) + … + n*p(n);
問題的關鍵就在於如何求解p(n);
很明顯,p(n)的值為剛好在第n次殺死boss的時候掉落出最後一件物品,之前的n-1次都是掉落其他3種物品,這樣才符合題意。
於是:其中ps表示「挑出的3種物品在前n-1個事件發生時候的出現的可能排列數」,他必須滿足1、三種物品必須全部出現;2、不能重複計算出現過的情況;
於是討論這個子問題:前n-1個事件中,恰好出現三種物品的排列數
有三種可能:
1、全部是一種物品: 共3種排列
2、恰好由兩種物品構成: 共
種3、恰好有三種物品構成 :
第三種情況恰好就是我們子問題的解
所以:然後利用分項錯開計算。計算無窮小數列的值。
最後可得:期望值為8.33左右
附上**:
**
usingsystem;
using
system.collections.generic;
using
system.linq;
using
system.text;
//乙個boss掉4個裝備,每殺死次boss都只掉1個,
//4個裝備掉的機率相等,問同一玩家要湊齊4個裝備平均要殺多少次boss?
namespace
boss
return
false;}
static
intsim()
;inti =
0;while
(test(a))
returni;}
static
void
boss1()
sum
/=count;
summ
+=sum;
}console.writeline(
"平均結果是:;
", summ /10
);}static
void
boss3()
console.writeline(
"計算和:
", s);
}static
void
main(
string
args)}}
雞蛋掉落問題
leetcode 887.雞蛋掉落 include include using namespace std intsupereggdropbs int k,int n 這一段改用二分查詢,而不從1列舉到i int start 1,end i,mid int res int max 可能存在找不到的情...
關於雞蛋掉落問題
運用動態規劃原理,相當於打 public intsupereggdrop int k,int n 當樓層為0時,f為0 for int i 0 i1 i dp 0 i 0 當雞蛋個數為0時,f 0 for int i 0 i1 i dp i 0 0 當乙個雞蛋的時候,f為給的樓層數 for int ...
Daily Practice 雞蛋掉落問題
示例 1 輸入 k 1,n 2 輸出 2解釋 雞蛋從 1 樓掉落。如果它碎了,我們肯定知道 f 0 否則,雞蛋從 2 樓掉落。如果它碎了,我們肯定知道 f 1 如果它沒碎,那麼我們肯定知道 f 2 因此,在最壞的情況下我們需要移動 2 次以確定 f 是多少。示例 2 輸入 k 2,n 6輸出 3示例...