• ベストアンサー

計算して下さい…

1-364!/(365n-1 × (365-n) ! )について、 (1)n=34のとき、(2)n=30 のときの値を知りたいのですが、関数電卓等を使っても桁数が大きすぎて計算できませんでした。 mathematicaなどを使えばすぐなのですが、持っていなくて… よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • inara1
  • ベストアンサー率78% (652/834)
回答No.1

計算式は    1 - 364!/{ ( 365*n - 1 )*( 365 - n ) ! } でしょうか。 364!/{ ( 365*n - 1 )*( 365 - n ) ! } の部分は、数式処理ソフト(Maple)では以下のようになりました。    n = 34 のとき 735777644027024410838270984399161235307693244094356900932772670796092261007360000000/12409 ≒ 5.929387090e79    n = 30 のとき 59480279000234440165959821294467983547000557360758208123927584047104000000/10949 ≒ 5.432485067e69 式が違うのなら計算し直します(括弧を使って正確に表現してください)。

その他の回答 (5)

  • ramayana
  • ベストアンサー率75% (215/285)
回答No.6

関数電卓orエクセルを使って、次のように計算することもできます。文明の利器が使える現在ではあまり意味がないかもしれませんが、ご参考まで。  a = log(2π)/2 + (x+1/2)log(x) + (-x+1/(12x+1))  b = log(2π)/2 + (x+1/2)log(x) + (-x+1/(12x)) と置くと、スターリングの近似により  a < log(x!) < b です。そこで、n=34のとき、bを使ってlog(364!)やlog((365-n)!)を近似すると、  log(364!) ≒ 1786.431752  log((365-n)!) = log(331!) ≒ 1593.321432 となります。また、  log(365^(n-1)) = 33×log(365) ≒ 194.696613 ですから、  log(364!/( 365^(n-1) × (365 - n)!)) ≒ 1786.431752 - 1593.321432 - 194.696613 ≒ -1.586292 となります。両辺の指数関数をとって、  364!/( 365^(n-1) × (365 - n)!) ≒ exp(-1.586292) ≒ 0.204683 よって、  1 - 364!/( 365^(n-1) × (365 - n)!) ≒ 0.795317 となります。同様にして、n=30の場合を計算すると、答は約0.706316になります。

  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.5

Windows の calc.exe で実際にやってみようとしたが、 根性が足りなくて、挫折した。 もう若くないし、高橋名人でもない(←この辺が歳)から。 十進BASIC(←この辺も歳)でやってみたところ… LET n=30 LET p=1 FOR i=1 TO n LET p=p*(366-i)/365 NEXT i PRINT 1-p END のプログラムで、 n=30 のとき 0.706316242719269、 n=34 のとき 0.795316864620154 となった。 危ぶまれた 1-積 でのアンダーフローは、 運よく発生しなかった模様。 いや、実際 No.3 の言うとおりだから、この場合は たまたま運がよかった。 参考: http://hp.vector.co.jp/authors/VA008683/

  • inara1
  • ベストアンサー率78% (652/834)
回答No.4

>1 - 364!/{ 365^(n-1) × (365 - n)! } じゃないかな? Web版の Mathematica で計算できます。ここ(http://www.wolframalpha.com/input/?i=1+-+364%21%2F%28365%5E%28n-1%29*%28+365+-+n+%29%21%29%29)の式の n のところに 30 や 34 を入れて Enter キーを押すと計算結果が出ます。Maple でも同じ結果になりました。

回答No.3

式の正体は何だ、と、悩んでましたが、#2の方の推定は、かなり、それっぽく見えますね。質問者さん、その式のことでしょうか? #2さんの回答への補足の形になりますが、#2さんの掛け算・割り算の順番工夫する手は、普通の関数電卓だと大変ですが、プログラム機能がついている機種では簡単なことも、PC+プログラム言語なら、まぁ、できて当然ですが、そこまでいかなくても、Excelくらいで、十分楽して求められます。 また、イマドキの関数電卓で、順列・組合せを計算する機能があれば(mPn = P[m,n], mCn = C[m,n] と表すことにして)… P[365,34]くらいなら、桁あふれをクリアできそう。Excelだと、順列の関数がありませんが、COMBIN(365,34)*FACT(34)で、これもクリア可。もう少し多くなると、これや、365^nを求めるときに、桁あふれしますが、そうしたら、#2の方の掛け算・割り算を交互にやる手で、それで、アンダーフロー(桁あふれ・オーバーフローの逆に、絶対値が扱える最小値を切る)が起きても、値を対数にして、足し算・引き算で計算し、真数に戻すときは、手作業なり何なりすれば、大丈夫、もっとも、そのあたりまでいく前に、確率が、実質的には1や0になっていて、計算する意味はないかもしれませんが^^ 大抵の問題は、こういう工夫をすれば、関数電卓やExcelで何とかなり、有効桁数がもっと必要だとか、特殊な場合を除けば、Mathematica や Maple に頼らないといけないケースはそうそうはないはずです。

  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.2

もしかして、意図した式は、 1 - 364!/{ 365^(n-1) × (365 - n)! } じゃないかな? そうだとしたら、冪乗の書き方が変だけれど。 誕生日が同じになる確率の計算に、この式は出てくる。 要するに、階乗を約分すれば、演算の回数が減る。 右項の分子分母に 365 を掛けた後、約分すれば、 1 - 365Pn / 365^n となる。 この形でも、電卓で(やや根性は要るが)計算できる。 途中に巨大な数が出てくることで支障があれば、 分子分母の因子を一個づづ対にして、 1 - (365/365)(364/365)(363/365)…{(366-n)/365} と変形してもいいかも。 いづれにしろ、長大な計算になるが、 出てくる数に規則性があるので、リズムさえ掴んでしまえば 電卓を叩き続けることも、さほど苦痛ではない(ことにしておく)。