我看到網站上的這個問題(我不會使用的確切措辭或提到的網站),曖昧期望值
假設一個孩子得到他的口袋裏的錢在每月的15日,根據該 那天是它在那天,讓我們說他得到1個硬幣在星期一 ,星期二有2個硬幣...星期天有7個硬幣。他在隨機月份的第15個月將獲得的預期 硬幣數量是多少?
起初我雖然每個的概率是1/7,所以答案應該是4,但它說的是錯誤的答案。
然後想詳細瞭解一下如何選擇一個隨機一個月,記住,日曆每400年後重演,所以想也許它是與這一點,所以我寫了下面的代碼:
int Date(int mn,int yr)
{
if((yr%400==0 || (yr%100!=0 && yr%4==0)) && mn==2)
return 29;
if(mn==2)
return 28;
if(mn==4 || mn==6 || mn==9 || mn==11)
return 30;
return 31;
}
int main()
{
double coins=0;
int wk=0;
for(int yr=1;yr<=400;yr++)
{
for(int mn=1;mn<=12;mn++)
{
for(int dt=1;dt<=Date(mn,yr);dt++)
{
if(dt==15)
coins += wk%7 +1;
wk++;
}
}
}
cout<<setprecision(10)<<coins/12/400;
}
輸出 -
4.001666667
和賓果!正確答案! 但是在思考更多一點的時候,我意識到我選擇星期一作爲開始的一天,但是不可能有一天嗎? 所以我在做這個節目變化不大 -
int main()
{
double total=0;
for(int i=0;i<7;i++)
{
int wk=i;
double coins=0;
for(int yr=1;yr<=400;yr++)
{
for(int mn=1;mn<=12;mn++)
{
for(int dt=1;dt<=Date(mn,yr);dt++)
{
if(dt==15)
coins += wk%7 +1;
wk++;
}
}
}
cout<<setprecision(10)<<coins/12/400<<endl;
total += coins;
}
cout<<endl<<setprecision(10)<<total/7/12/400;
}
輸出 -
4.001666667
3.998333333
4.000833333
3.998958333
4
4.001041667
3.999166667
4
SOOOO ......現在真的很迷茫......我們就應該把它4.00666「導致它在1日是星期一Jan 0001或者問題可以有任何答案,或者我在這裏錯過了一些非常重要的東西?
這應該是正確的答案?
如果沒有「正確」答案存在,那麼您認爲最合適的答案是什麼?
隨機月份是什麼?今年?任何年份(一致的概率)在給定的時間間隔內,還是永恆的?也許你沒有引用相關的部分,也許整個練習沒有明確說明,也無法解決。 –
@ArneVogel這個問題只是說「隨機月」,它沒有描述任何關於隨機月份被選擇的地方,我想它只能被視爲永恆。 –