• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:java(android)のプログラミングについて)

Java(Android)プログラミングで確率計算を処理する方法

このQ&Aのポイント
  • Java(Android)のプログラミングにおいて、確率計算の処理について困っています。
  • 特に、階乗計算の数値が大きくなるため処理ができない状況です。
  • 処理可能なコードの具体例や、簡単に処理できる公式について教えていただきたいです。

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.4

x/(x + y) =1/(1 + y/x) =1 / (1 + (1-1/200)^9940 * (1/200)^60 / ((1-1/150)^9940 * (1/150)^60)) =1 / (1 + (199*150/(200*149))^9940 * (150/200)^60) =1 / (1 + (597/596)^9940 * (3/4)^60) これならオーバーフローさせずに計算できませんか。 ちなみに結果は、 x/(x + y)≒0.644980612

patio153000
質問者

お礼

丁寧なアドバイス有難うございます。このやり方で無事に出来ました。

その他の回答 (3)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.3

ANo.2。無限値になるケースを考慮してないから、役立たないですね。

patio153000
質問者

お礼

いえ、貴重なご意見ありがとうございました。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

やりたいことが、階乗の計算でなくて、組み合わせの数を計算したいということなら、 こんなのとか。

noname#177743
noname#177743
回答No.1

Doubleで桁数が足りないような大きな数値を扱う場合には、BigIntegerやBigDecimalクラスを利用して処理することになるでしょう。この場合は実数を扱うのでしょうから、BigDecimalを利用すればよいでしょう。これらはAndroidでも利用可能です。 これらは、桁数無制限の巨大な値を扱うための専用クラスです。基本型ではなくオブジェクトですから四則演算の演算子は使えず、計算はすべてクラスに用意されたメソッドを使います。例えば、A + Bならば、A.add(B)という具合ですね。そのようにして計算式をメソッドによる記述に書き換えてやれば処理できると思います。 BigDecimalクラスについては以下を参照 http://developer.android.com/reference/java/math/BigDecimal.html

patio153000
質問者

お礼

詳しい説明有難うございました。違うやり方で出来ましたが、貴重なご意見有難うございました。

関連するQ&A

専門家に質問してみよう