91 日目(雨一時曇りか晴れ)諦めるな。諦めるなよ、お前!
0:20 テレビの東京フォトライブラリーが私の苦手なエリアなのでとっとと寝る。 夜中に強い雨が降り出す。気が重くなり深く眠る。
8:45 起床。気分がいきなり落ち込んでいる。理由はない。 朝飯は納豆とレーズンロール。天気が悪い日が続くため、ゴミが溜まっている。
麻雀コードを書く。牌山周りのクラスを書く。サイコロの意味がなさすぎる。 カンが生じたときの牌の調整コードが面倒そう? リンシャンから一枚ずつ削るのはともかく、 ハイテイ牌の調整はどう表現する?
12:00 配牌テストくらいはできるか。5m6m7m9m とかを 5679m に置き換えるほうがいいか?
牌譜はこの書式なので放置でいいか。
bash$ ./playerhand.py
5m6m7m9m3s5s7s9s1p7p西白発 4 シャンテン
2m3m4m5m1s9s2p4p6p9p西北白 5 シャンテン
1m4m1s2s4s1p3p4p5p5p5p白中 4 シャンテン
3m3m8m9m2s5s7s1p3p7p8p東南 4 シャンテン
bash$ ./playerhand.py
1m7m7m8m1s1s9s3p5p東北発中 4 シャンテン
1m2m3m4m3s4s9s4p7p7p9p白中 4 シャンテン
3m4m6m9m3s4s5s6s6s7s8s8p発 3 シャンテン
3m6m8m1s8s1p4p5p5p6p西白中 5 シャンテン
bash$ ./playerhand.py
1m1m9m1s2s6s8s6p6p7p9p西中 4 シャンテン
2m4m8m3s7s2p2p3p7p東西発中 5 シャンテン
1m3m5m7m8s1p3p3p5p6p8p南北 4 シャンテン
2m1s3s4s5s9s1p7p南南北北発 4 シャンテン
13:00 外出開始。こればかり書いているが蒸し暑い。雨が上がって日が照っている最悪の気象条件。
13:40 ビッグエー墨田業平店。151 円。
- たっぷりオニオンツナマヨ
- ふっくらおむすびとろサーモン
13:45 ドラッグスマイル墨田横川店。438 円。遅ればせながらマスクを自費?で買う。
柳島児童遊園でおやつ休憩。横川コミュニティー会館図書室へ移動して新聞と教科書を読む。
タイトー F ステーションオリナス錦糸町店。ビートマニアと MJ に 7 クレ突っ込む。 幻球乱舞東風で 3 連続ラスでよくポッキンと行かなかった。その後 3 連続トップがあって収支が一時プラスにまでなる。 最後は原点が維持できずにトータルマイナ 2 球で終わる。ダマでアガれる条件が何局も整ったのがついていた。
18:20 カスミオリナス錦糸町店。336 円。八宝菜丼。
18:50 ビッグエー墨田業平店。201 円。
- シュークリーム
- 小粒納豆 (3)
- レーズンロール (4)
19:05 向島の部屋に戻る。白ブリーフ一丁でニュースを観ながら晩飯にする。 PC で帳簿をつけて電話ボックスへ移動だ。
19:45 電話ボックス。情報収集。髭アーカイブの新作が出ているがダウンロードできず。 YouTube の規格が変わってスクリプトが動かなくなったか、あるいはテーマの元ネタが映画なのでガードが効いているかだ。 諦めて帰る。
風呂に入って出る。部屋が暑いので座ってすぐに腕や背中に汗がでる。ダメだこりゃ。
22:15 数学ノートを写す。計算は今実行する。なぜ binary_search() が手許のどのライブラリーにもないのだ?
推測統計の最初の部分は時間の都合で写せない。南無。
いつの間にかまとまった雨が降っていて涼しくなっている。アイテム集めをやるか。 バッドローパーがなかなか斧を落とさない。先にムーンライトソード入手。
シメの麻雀の練習をして寝る。
Math Notes
薩摩本より。正規分布の演習問題を解いていく。
問:ある池の魚は体調が平均 $22$ 標準偏差 $9.2$ の正規分布に従うという設定だ。 この池から魚を一匹とるとき、大きさが $35$ を超えている確率はいくらか。
解:この確率変数を $X$ とおく。$Z = \dfrac{X - 22}{9.2}$ は標準正規分布 $N(0, 1)$ に従う。ゆえに
\[\begin{aligned} P(X \gt 35) &= P\!\left(Z \gt \frac{35 - 22}{9.2}\right)\\ &\approx P(Z \ge 1.413) \end{aligned}\]手許に正規分布表がないので Python で計算する。
>>> from statistics import NormalDist
>>> 1 - NormalDist().cdf((35 - 22) / 9.2)
0.07882147030534814
>>> 1 - NormalDist(22, 9.2).cdf(35)
0.07882147030534803
よって $8\%$ 弱。 $\blacksquare$
問:確率変数 $X$ が正規分布 $N(\mu, \sigma^2)$ に従う。 $P(\lvert X - \mu \rvert \gt c\sigma) = 0.01$ となる定数 $c$ を求めろ。
解:$Z = \dfrac{X - \mu}{\sigma}$ とおくとこの確率変数は $N(0, 1)$ に従う。
\[\begin{aligned} P(\lvert X - \mu \rvert \gt c\sigma) &= P(\lvert Z \rvert \gt c) = 0.01\\ P(Z \gt c) &= \frac{0.01}{2} = 0.005.\\ P(Z \lt c) &= 1 - 0.005 = 0.995.\\ \end{aligned}\]となる $c$ を求めることに等しい。今度は SciPy を採用しよう。
>>> from scipy.stats import norm
>>> N = norm
>>> N.cdf(2)
0.9772498680518209
>>> N.cdf(3)
0.9986501019683699
なので $2 \lt c \lt 3$ がわかる。二分法を採用して求める。
>>> def binary_search(tol=1e-8):
... N = NormalDist(0, 1)
... target = 0.995
... lower, upper = 2, 3
... c = (lower + upper) * .5
... while abs((P := N.cdf(c)) - target) > tol:
... if P < target:
... lower, c = c, (c + upper) * .5
... else:
... c, upper = (lower + c) * .5, c
... return c
...
>>> binary_search()
2.57582950592041
実際にはその手の関数が豊富にあるのでそれを利用する:
>>> N.interval(1 - 0.01)
(-2.5758293035489004, 2.5758293035489004)
>>> N.isf(0.005)
2.575829303548901
>>> N.ppf(0.995)
2.5758293035489004
問:まともな硬貨を $n$ 回トスして表が $m$ 回出るとおく。 このとき $0.4 \lt m/n \lt 0.6$ となる確率を $99\%$ 以上にしたい。 何回トスする必要があるか。正規分布の近似を用いること。
解:$\displaystyle P\left(\left\lvert \frac{m}{n} - 0.5 \right\rvert \gt 0.1\right) = 0.01$ が必要。 $\dfrac{m}{n}$ は $\mu = n \cdot \dfrac{1}{2}\cdot \dfrac{1}{n} = \dfrac{1}{2},:\sigma^2 = n\cdot \dfrac{1}{2}\left(1 - \dfrac{1}{2}\right)\cdot\dfrac{1}{n^2} = \dfrac{1}{4n}$ の二項分布に従う。
\[\begin{aligned} Z = \cfrac{\cfrac{m}{n} - 0.5}{\sqrt{\cfrac{1}{4n}}} \end{aligned}\]が $N(0, 1)$ に従うほど十分多い $n$ 回トスするということだ。
\[\begin{aligned} P\left(\left\lvert \frac{m}{n} - 0.5\right\rvert \gt 0.1\right) = P\left(\lvert Z \rvert \gt 0.2\sqrt{n}\right)) = 0.01 \end{aligned}\]と変形する。うまい具合に前問の結果を利用できる。
\[\begin{aligned} 0.2\sqrt{n} &\gt 2.5758...\\ n &\gt (2.5758... / 0.2)^2 = 165.87244... \end{aligned}\]したがって $166$ 回のトスが必要。 $\blacksquare$
以上