teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

変更

2018/05/06 21:03

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -27,4 +27,4 @@
27
27
  # => 6.040124011291546e-162
28
28
  ```
29
29
 
30
- 上のscipyの結果とは若干ずれてるみたいですが、一応やればできますということで。
30
+ 上のscipyの結果とは若干ずれてるみたいですが(浮動小数点計算かつ近似計算なので仕方ない)、一応やればできますということで。

1

追記

2018/05/06 21:03

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -6,4 +6,25 @@
6
6
  >>> from scipy import stats
7
7
  >>> stats.binom.pmf(1000, 10000, 0.2)
8
8
  6.0401240113519745e-162
9
- ```
9
+ ```
10
+
11
+ ### 追記
12
+ 「勉強でやってるんだから、ライブラリ丸投げじゃ意味ないんですよね」という場合に備えて追記。
13
+
14
+ 一回logを取ってlogの足し算にしてからexpしてみる。
15
+
16
+ ```python
17
+ import scipy.misc as scm
18
+ from math import log, exp
19
+
20
+ def binomialDistribution2(x, n, p):
21
+ t1 = log(scm.comb(n,x, exact=True))
22
+ t2 = x*log(p)
23
+ t3 = (n-x)*log(1.0-p)
24
+ return exp(t1+t2+t3)
25
+
26
+ print(binomialDistribution2(1000, 10000, 0.2))
27
+ # => 6.040124011291546e-162
28
+ ```
29
+
30
+ 上のscipyの結果とは若干ずれてるみたいですが、一応やればできますということで。