- 181 名前:132人目の素数さん mailto:sage [2024/07/21(日) 21:06:57.47 ID:3skoHSGy.net]
- >>163
面倒な計算、ありがとうございます。 想定解と合致していて安堵。 Wolfram言語のトレーニングに n 人に m 種類の血液型が存在する確率を計算する小道具(場合分けして集計しているだけ)を作成 calc[n_,m_] :=( If[m<1||m>4,Return[0]]; f[x_] :=( {p1,p2,p3,p4}={1/10,2/10,3/10,4/10}; {b1,b2,b3,b4}=x; Binomial[n,b1] p1^b1 Binomial[n-b1,b2] p2^b2 Binomial[n-b1-b2,b3] p3^b3 p4^b4 ); x=Select[Partition[Flatten@Table[{x1,x2,x3,n-x1-x2-x3},{x1,Range[0,n]},{x2,Range[0,n]},{x3,Range[0,n]}],4],#[[4]]>=0&]; Total[f /@ Select[x,Total@Boole@Table[#[[i]]>0,{i,Range[4]}]==m&]] ) 別法で計算してくれた値と合致しているので、正しい計算をしている予感。 乱数発生させてのシミュレーションである程度、正答の確信がもてるが、 確率が0.014913程度だとシミュレーションでの確認が回数を増やさないと近似が悪い。 1000万回やって n=40; m=3; k=10^7; N@Mean@Table[Boole[Length@Union@RandomChoice[Range[4]/10->Range[4],n]==m],k] 0.0149423
|

|