回答編集履歴

2

変更

2018/05/06 21:03

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -56,4 +56,4 @@
56
56
 
57
57
 
58
58
 
59
- 上のscipyの結果とは若干ずれてるみたいですが、一応やればできますということで。
59
+ 上のscipyの結果とは若干ずれてるみたいですが(浮動小数点計算かつ近似計算なので仕方ない)、一応やればできますということで。

1

追記

2018/05/06 21:03

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -15,3 +15,45 @@
15
15
  6.0401240113519745e-162
16
16
 
17
17
  ```
18
+
19
+
20
+
21
+ ### 追記
22
+
23
+ 「勉強でやってるんだから、ライブラリ丸投げじゃ意味ないんですよね」という場合に備えて追記。
24
+
25
+
26
+
27
+ 一回logを取ってlogの足し算にしてからexpしてみる。
28
+
29
+
30
+
31
+ ```python
32
+
33
+ import scipy.misc as scm
34
+
35
+ from math import log, exp
36
+
37
+
38
+
39
+ def binomialDistribution2(x, n, p):
40
+
41
+ t1 = log(scm.comb(n,x, exact=True))
42
+
43
+ t2 = x*log(p)
44
+
45
+ t3 = (n-x)*log(1.0-p)
46
+
47
+ return exp(t1+t2+t3)
48
+
49
+
50
+
51
+ print(binomialDistribution2(1000, 10000, 0.2))
52
+
53
+ # => 6.040124011291546e-162
54
+
55
+ ```
56
+
57
+
58
+
59
+ 上のscipyの結果とは若干ずれてるみたいですが、一応やればできますということで。