有6個球,每個球都隨機丟入5個箱子,求空箱的期望值?高中 回應 coldbear Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值? 2009-03-07 16:55 先算一個空箱的機率(先不管其他箱子是否有沒有球),最後再乘5 (4*4*4*4*4*4)/(5*5*5*5*5*5)...........一個空箱 在*5.............五個箱子 答案為4096/3125=1.31072 scottwang Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值? 2009-03-07 22:41 您所提出的解答有誤! 若按照您所述的方式相乘求解,求得期望值, 則您並未考慮到多球置於同一箱子內的情況!引用: coldbear 寫道: 先算一個空箱的機率(先不管其他箱子是否有沒有球),最後再乘5 (4*4*4*4*4*4)/(5*5*5*5*5*5)...........一個空箱 在*5.............五個箱子 答案為4096/3125=1.31072 scottwang Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值? 2009-03-07 22:51 我所提出的解法如下: 若假設在五個箱子內皆有一個「虛球」, 則問題轉化為在6+5=11個球產生的10條縫中, 插入4條線段(且不在同一條縫中), 使其共被分為5個部份。 可以求得空箱的期望值應為: C(5取3)*1/C(10取4)+C(5取2)*2/C(10取4)+C(5取1)*3/C(10取4)+C(5取0)*4/C(10取4) =49/210 =7/30 孫文先 Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值? 2009-03-08 11:35 應乘上空箱的選法。 可以求得空箱的期望值應為: 5*C(5取3)*1/C(10取4)+10*C(5取2)*2/C(10取4)+10*C(5取1)*3/C(10取4)+5*C(5取0)*4/C(10取4) =420/210 =2 ksjeng Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值? 2009-03-08 16:33 http://ww2.worldone.com.tw/new_detail.do?ncId=15&newsId=4737#answer 我覺得這題好難引用: wanghp Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值? 2009-04-29 18:43 2樓是對的 15625種情況中 一共有20480個空箱 以下是程式碼 (暴力法 不建議使用) #include #include #include int i,s=0,o[6]={0,0,0,0,0,0}; bool b[5]; FILE *f; void op(void) { o[5]++; if(o[5]>4){o[5]=0;o[4]++;} if(o[4]>4){o[4]=0;o[3]++;} if(o[3]>4){o[3]=0;o[2]++;} if(o[2]>4){o[2]=0;o[1]++;} if(o[1]>4){o[1]=0;o[0]++;} } int main(void) { f=fopen("empty box.txt","w+t"); for(i=15625;i;i--) { b[0]=b[1]=b[2]=b[3]=b[4]=1; fprintf(f,"%d%d%d%d%d%d",o[0],o[1],o[2],o[3],o[4],o[5]); b[o[0]]=0;b[o[1]]=0;b[o[2]]=0;b[o[3]]=0;b[o[4]]=0;b[o[5]]=0; fprintf(f," %d\n",b[0]+b[1]+b[2]+b[3]+b[4]); s+=b[0]+b[1]+b[2]+b[3]+b[4]; op(); } fprintf(f,"%d\n%f\n",s,s/15625.0); getchar(); return 0; }
coldbear Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值? 2009-03-07 16:55 先算一個空箱的機率(先不管其他箱子是否有沒有球),最後再乘5 (4*4*4*4*4*4)/(5*5*5*5*5*5)...........一個空箱 在*5.............五個箱子 答案為4096/3125=1.31072
scottwang Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值? 2009-03-07 22:41 您所提出的解答有誤! 若按照您所述的方式相乘求解,求得期望值, 則您並未考慮到多球置於同一箱子內的情況!引用: coldbear 寫道: 先算一個空箱的機率(先不管其他箱子是否有沒有球),最後再乘5 (4*4*4*4*4*4)/(5*5*5*5*5*5)...........一個空箱 在*5.............五個箱子 答案為4096/3125=1.31072
scottwang Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值? 2009-03-07 22:51 我所提出的解法如下: 若假設在五個箱子內皆有一個「虛球」, 則問題轉化為在6+5=11個球產生的10條縫中, 插入4條線段(且不在同一條縫中), 使其共被分為5個部份。 可以求得空箱的期望值應為: C(5取3)*1/C(10取4)+C(5取2)*2/C(10取4)+C(5取1)*3/C(10取4)+C(5取0)*4/C(10取4) =49/210 =7/30
孫文先 Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值? 2009-03-08 11:35 應乘上空箱的選法。 可以求得空箱的期望值應為: 5*C(5取3)*1/C(10取4)+10*C(5取2)*2/C(10取4)+10*C(5取1)*3/C(10取4)+5*C(5取0)*4/C(10取4) =420/210 =2
ksjeng Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值? 2009-03-08 16:33 http://ww2.worldone.com.tw/new_detail.do?ncId=15&newsId=4737#answer 我覺得這題好難引用:
wanghp Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值? 2009-04-29 18:43 2樓是對的 15625種情況中 一共有20480個空箱 以下是程式碼 (暴力法 不建議使用) #include #include #include int i,s=0,o[6]={0,0,0,0,0,0}; bool b[5]; FILE *f; void op(void) { o[5]++; if(o[5]>4){o[5]=0;o[4]++;} if(o[4]>4){o[4]=0;o[3]++;} if(o[3]>4){o[3]=0;o[2]++;} if(o[2]>4){o[2]=0;o[1]++;} if(o[1]>4){o[1]=0;o[0]++;} } int main(void) { f=fopen("empty box.txt","w+t"); for(i=15625;i;i--) { b[0]=b[1]=b[2]=b[3]=b[4]=1; fprintf(f,"%d%d%d%d%d%d",o[0],o[1],o[2],o[3],o[4],o[5]); b[o[0]]=0;b[o[1]]=0;b[o[2]]=0;b[o[3]]=0;b[o[4]]=0;b[o[5]]=0; fprintf(f," %d\n",b[0]+b[1]+b[2]+b[3]+b[4]); s+=b[0]+b[1]+b[2]+b[3]+b[4]; op(); } fprintf(f,"%d\n%f\n",s,s/15625.0); getchar(); return 0; }
回應
coldbear
Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值?
2009-03-07 16:55(4*4*4*4*4*4)/(5*5*5*5*5*5)...........一個空箱
在*5.............五個箱子
答案為4096/3125=1.31072
scottwang
Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值?
2009-03-07 22:41若按照您所述的方式相乘求解,求得期望值,
則您並未考慮到多球置於同一箱子內的情況!
scottwang
Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值?
2009-03-07 22:51若假設在五個箱子內皆有一個「虛球」,
則問題轉化為在6+5=11個球產生的10條縫中,
插入4條線段(且不在同一條縫中),
使其共被分為5個部份。
可以求得空箱的期望值應為:
C(5取3)*1/C(10取4)+C(5取2)*2/C(10取4)+C(5取1)*3/C(10取4)+C(5取0)*4/C(10取4)
=49/210 =7/30
孫文先
Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值?
2009-03-08 11:35應乘上空箱的選法。
可以求得空箱的期望值應為:
5*C(5取3)*1/C(10取4)+10*C(5取2)*2/C(10取4)+10*C(5取1)*3/C(10取4)+5*C(5取0)*4/C(10取4)
=420/210 =2
ksjeng
Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值?
2009-03-08 16:33我覺得這題好難
wanghp
Re: 有6個球,每個球都隨機丟入5個箱子,求空箱的期望值?
2009-04-29 18:4315625種情況中
一共有20480個空箱
以下是程式碼
(暴力法 不建議使用)
#include
#include
#include
int i,s=0,o[6]={0,0,0,0,0,0};
bool b[5];
FILE *f;
void op(void)
{
o[5]++;
if(o[5]>4){o[5]=0;o[4]++;}
if(o[4]>4){o[4]=0;o[3]++;}
if(o[3]>4){o[3]=0;o[2]++;}
if(o[2]>4){o[2]=0;o[1]++;}
if(o[1]>4){o[1]=0;o[0]++;}
}
int main(void)
{
f=fopen("empty box.txt","w+t");
for(i=15625;i;i--)
{
b[0]=b[1]=b[2]=b[3]=b[4]=1;
fprintf(f,"%d%d%d%d%d%d",o[0],o[1],o[2],o[3],o[4],o[5]);
b[o[0]]=0;b[o[1]]=0;b[o[2]]=0;b[o[3]]=0;b[o[4]]=0;b[o[5]]=0;
fprintf(f," %d\n",b[0]+b[1]+b[2]+b[3]+b[4]);
s+=b[0]+b[1]+b[2]+b[3]+b[4];
op();
}
fprintf(f,"%d\n%f\n",s,s/15625.0);
getchar();
return 0;
}