Tamflexの貯蔵庫

やる気のない備忘録

【ポケ森】「あおいチューリップ」の育て方 【どうぶつの森ポケットキャンプ】

検索エンジンで調べるといくつかのサイトで攻略方法がありましたが、実験に基づいた最も確からしいサイトがあったので検証結果・考察とともに報告します。結構しっかり作られているみたいで、ゲーム内で科学実験を疑似的に楽しめて面白いですね。

※参考にしたサイト www.reddit.com


目次

Ⅰ チューリップの遺伝子

遺伝子の顕性・潜性 (優性・劣性)

各チューリップの種には2種類の遺伝子を持ち、以下の優先順位を持つようです。

赤 > 黄 > 橙 > 黒 > 桃 > 紫 > 白 > 青

従って、例えば紫のチューリップがあった場合、考えられる遺伝子のパタンとしては

(紫/紫)・(紫/白)・(紫/青)

の3パタンが可能性としてあるようです。*1


はにわから購入する種の遺伝子

購入した遺伝子は以下の通り固定されているようです。

初期遺伝子

種の種類 遺伝子 花の色
あかいチューリップのたね (赤/黄)
オレンジのチューリップのたね (橙/白)

すなわち購入した種から育てた花で交配した場合、赤・黄・橙・白の4種類の色の花が得られるということになります。また「しろいチューリップ」が相対的にかなり潜性の遺伝子のみで構成されているにも関わらず、売値が40ベルと安いのは購入した種から簡単に入手できるからのようです*2


突然変異

このままだと4種類の色の花しか咲かないので、別の遺伝子が発生するように突然変異のメカニズムが導入されています。現時点で報告されている突然変異のパターンは以下の通りのようです。

突然変異の確率

元遺伝子 変異後 花の色
(赤/白) (桃/白)
(白/白) (黒/白)
(桃/黒) (紫/青)

この突然変異の確率は70%であることが報告されています。結構頻度としては高いですね。また推測の範囲ですが、突然変異が起きた場合「めずらしい!」との表示がされるので、その場合の花の遺伝子は一意に決定されます。


交配失敗確率

交配に失敗する確率は以下の通り決まっているようです。

 失敗確率

花の色 失敗確率
20%
それ以外 10%

紫の失敗率は20%と高めになっております。紫でよく失敗する経験をされた方も多いのではないでしょうか?



Ⅱ「あおいチューリップ」の育て方

さて本題の「あおいチューリップ」の育て方ですが、上記知見が正しいと仮定した場合、あおいチューリップの最短獲得手順および各ステップにおける確率・期待値が計算できるのでやってみようと思います。

ゼロからの場合

1. 「ピンクのチューリップ」の育成

まず「ピンクのチューリップ」を育てましょう。「ピンクのチューリップ」は購入した種から育てた赤×橙の交配で得られます。確率は以下のとおりになります。

「あかいチューリップ(購入)」×「オレンジのチューリップ(購入)」

遺伝子 花の色 確率
(赤/橙) 25%
(赤/白) 7.5%
(桃/白) 17.5%
(黄/橙) 25%
(黄/白) 25%

すなわち失敗率も考慮して \frac{100}{17.5 \times 0.9} \approx 6.35より6回程度交配すれば「ピンクのチューリップ」が平均1本得られます。

もし一度この「ピンクのチューリップ」が手に入れば、購入した種由来の「オレンジのチューリップ」と交配することにより以下の確率で「ピンクのチューリップ」及び「くろいチューリップ」が得られます。

「ピンクのチューリップ(突然変異)」×「オレンジのチューリップ(購入)」

遺伝子 花の色 確率
(桃/白) 25%
(橙/白) 25%
(橙/桃) 25%
(白/白) 7.5%
(黒/白) 17.5%

「ピンクのチューリップ」および「くろのチューリップ」を量産する場合にはこの手順がかなり効率が良いと思われます。 また頑張って(桃/桃)のチューリップを育成するのもひとつの手ですが、遺伝子の特定が難しいため、この手順が一番現実的だと思われます。


2. 「くろいチューリップ」の育成

ピンクのチューリップと並列してくろいチューリップを育成しましょう。くろいチューリップも購入した種から育てた橙×橙の交配で得られます。確率は以下のとおりになります。

「オレンジのチューリップ(購入)」×「オレンジのチューリップ(購入)」

遺伝子 花の色 確率
(橙/橙) 25%
(橙/白) 50%
(黒/白) 17.5%
(白/白) 7.5%

この場合も \frac{100}{17.5 \times 0.9} \approx 6.35より6回程度の交配によりくろいチューリップが得られます。 もしくは現時点で「しろいチューリップ」が複数本あった場合、白×白の交配でも高い確率で得られます。確率は以下のとおりになります。

「しろいチューリップ(交配)」×「しろいチューリップ (交配)」

遺伝子 花の色 確率
(白/白) 30%
(黒/白) 70%

この場合はかなり高い確率で「くろいチューリップ」が得られるのでおすすめです。 また同様に、突然変異(めずらしい!の表示)で得られた「くろいチューリップ」と、購入した種由来の「オレンジのチューリップ」を交配すれば、以下の確率で得られます。

「くろいチューリップ(突然変異)」×「オレンジのチューリップ(購入)」

遺伝子 花の色 確率
(橙/黒) 25%
(橙/白) 25%
(黒/白) 37.5%
(白/白) 7.5%

この方法は橙同士よりも高い確率なので、量産向きの手法と言えるでしょう。


3. 「むらさきのチューリップ」の育成

上の手順で「くろいチューリップ」と「ピンクのチューリップ」が得られたら、これらを交配させましょう。もちろん別の手順で「くろいチューリップ」および「ピンクのチューリップ」をふやしたものを用いても構いませんが、簡単のため先ほどの手順で作成したチューリップを掛けあわせることにします。確率は以下のとおりになります。

「くろいチューリップ(突然変異)」×「ピンクのチューリップ(突然変異)」

遺伝子 花の色 確率
(黒/桃) 7.5%
(黒/白) 37.5%
(桃/白) 25%
(紫/青) 17.5%
(白/白) 7.5%

この場合も、 \frac{100}{17.5 \times 0.9} \approx 6.35より6回程度の交配で「むらさきのチューリップ」が得られます。


4. 青の遺伝子の拡散

手順3で得られた「むらさきのチューリップ」には青の遺伝子が含まれています。これらを別の遺伝子に拡散させるのが次のステップになります。ここで注意したいのはおそらく「(紫/青)×(紫/青)では(紫/紫)しか出現しない」ということです。実際、先ほどの手順で得られた(紫/青)同士を20回掛けあわせても1回も「あおいチューリップ」を得ることはできませんでした*3。検証にはもう少しサンプルが必要ですが、紫同士の交配で青が出ないように調整されている可能性は十分あります。

従って一度この青の遺伝子を別の花に移す必要があります。ここでは購入した種由来の橙とかけ合わせると以下のように50%の確率で拡散に成功します。

「むらさきのチューリップ(突然変異)」×「オレンジのチューリップ(購入)」

遺伝子 花の色 確率
(橙/紫) 25%
(橙/青) 25%
(紫/白) 25%
(白/青) 25%

5. 「あおのチューリップ」の育成

あとは手順4で得られた「しろのチューリップ」及び「オレンジのチューリップ」と、手順3で得られた「むらさきのチューリップ」を交配すればそれぞれ25%の確率で「あおいチューリップ」が得られます。確率を表にすると

「むらさきのチューリップ(突然変異)」×「オレンジのチューリップ(手順4)」

遺伝子 花の色 確率
(橙/紫) 25%
(橙/青) 25%
(紫/紫) 12.5%
(紫/青) 25%
(青/青) 12.5%

「むらさきのチューリップ(突然変異)」×「しろいチューリップ(手順4)」

遺伝子 花の色 確率
(紫/白) 25%
(紫/青) 50%
(青/青) 25%

あおいチューリップが既にある場合

交配させると必ず青の遺伝子を手に入れるので、交配した者同士で再び交配させると25%の確率で「あおいチューリップ」が手に入ります。また青の遺伝子を持つ個体がわかっている場合、「あおいチューリップ」と交配させると50%の確率で「あおいチューリップ」が出現します。以上のことから量産はかなり簡単だということがわかります。


まとめ

以上の交配の手順を図に表すと以下のようになります。実線は購入可能なもの、点線は交配したものです。

f:id:Tamflex:20171227231237p:plain:w500
「あおいチューリップ」の交配例



Ⅲ「あおいチューリップ」は儲かるか?

「あおいチューリップ」の売値は100ベルで、購入する種子の値段は80ベルです。したがって購入した種子を「あおいチューリップの種」に変換すればそのまま20ベル儲かる計算になります。 しかしながら現実には交配の失敗もあるのでその儲けは小さくなります。さてここで一個「あおいチューリップ」がすでにある状況で「あおいチューリップ」で平均いくら稼げるか求めてみようと思います。

まず、はにわから種を購入して「あおいチューリップ」と交配させると必ず青の遺伝子を持つ種子が手に入ります。あとはその種子を(青/青)になるまで交配を続けます。この時一回の交配あたり10%の確率で失敗してしまうので、一つの種が失敗する確率は

 \displaystyle
\frac{1}{10} \sum_{n=0}^{\infty} \left( \frac{9}{10} \times \frac{1}{2} \right)^{n}
= \frac{1}{10(1-\frac{9}{20})} = \frac{2}{11}

となります。従って、一つの種から得られるベルの期待値は

 \displaystyle
100 \times \frac{9}{11} \approx 81.8

となることがわかります。御覧の通り儲かるけど、非常に微妙な額ですね…。儲けは一本当たりたったの2ベルしかありません。

バザーやほかの狩猟採集もそうですが「ポケ森」では、ゲーム内システムの維持のため、お金や資源が急激に増えないようにシステムがよく作られていることを実感しました。ここら辺は課金ゲームの宿命なのでしょうが、個人的には旧作のシーラカンスのように非現実的な荒稼ぎをしてみたかったですね。

Ⅳ 総論

「あおいチューリップ」についていろいろな作り方が巷で出回っていますが、こうしてみるとフレンドの力なしでも比較的簡単に育成できることがわかります。お時間があればぜひお試ししてはいかがでしょうか?

*1:以下遺伝子は(A/B)、花の色(形質)はカッコ無しで表記します。

*2:ただ後述のように突然変異のため、確率は「くろいチューリップ」のほうが高く、結構「しろいチューリップ」はレア度が高いです。

*3:これは参考にしたブログにも書かれていました。

複数プロジェクトが併存できるC++用の汎用的なMakefile

汎用的に使えるMakefileを作ってみた
github.com

詳細はこちらから
qiita.com

anaconda3でgraph_toolを使う

ubuntuでgraph_tool(graph-tool: Efficent network analysis with python)を使うときには、以下のリンクに従ってレポジトリを登録したあと、以下のコマンドで簡単にインストールできる。

sudo apt install python-graph-tool # python2 version
sudo apt install python3-graph-tool # python3 version

git.skewed.de

けれどもanaconda3で使うときはパスが通っていないためimport graph_toolが使えなくて困る。
で無理やりgraph_toolが入っているパスを以下のように通してあげると…

import sys
sys.path.append('/usr/lib/python3/dist-packages')

以下のようなエラーが出てきてしまう。

ImportError: /path/to/file/anaconda3/bin/../lib/libgomp.so.1: version `GOMP_4.0' not found (required by /usr/lib/python3/dist-packages/graph_tool/libgraph_tool_core.so)

どうやら共有ライブラリlibgomp.so.1のバージョンが違うらしい。だったら共有ファイルを無理やりシステムのものを使うようにリンクを通してあげれば良い。

cd /path/to/file/anaconda3/lib
mv libgomp.so.1 libgomp.so.1.bak
ln -s /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0 libgomp.so.1

同様に共有ファイルlibstdc++.soについても同じように以下のようなエラーが出る

ImportError: /path/to/file/anaconda3/lib/python3.5/site-packages/scipy/special/../../../../libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/lib/python3/dist-packages/graph_tool/libgraph_tool_core.so)

だから同じようにリンクを作る。

mv libstdc++.so libstdc++.so.bak
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22 libstdc++.so
mv libstdc++.so.6 libstdc++.so.6.bak
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22 libstdc++.so.6

自分の環境ではこれでエラーが出なくなり正常にimportされるようになった。
あとはpthファイルを以下のように作れば冒頭のように一々import sysをしなくて済む。

cd /path/to/file/anaconda3/lib/python3.5/site-packages
touch graph_tool.pth
echo /usr/lib/python3/dist-packages > graph_tool.pth

フィボナッチ数の一般項

フィボナッチ数の一般項は以下の式で表される。
{\displaystyle
a_n = \frac{1}{\sqrt{5}}\left(\left(\frac{1+\sqrt{5}}{2}\right)^n-\left(\frac{1-\sqrt{5}}{2}\right)^n\right)
}

これを展開して、無理数をなくしてあげると以下のようになる。
{\displaystyle
a_n = \frac{1}{2^{n-1}}\sum_{i=0}^{\lfloor \frac{n}{2} \rfloor}\binom{n}{2i+1}~5^i
}

計算量は{O(n^2)}である。例えばpython3で実装すれば以下のようになる。

import scipy.misc as scm
import math

fib = lambda n : int(sum([scm.comb(n,2*i+1,1)*(5**i) for i in range(math.floor((n-1)/2)+1)])/2**(n-1))

print(fib(1000))

ssh設定の備忘録

よく設定する癖によく忘れるので備忘録を書きます

クライアント側設定

鍵の作成

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

鍵にかかっているパスワードの変更

$ ssh-keygen -p
Enter file in which the key is (/home/user/.ssh/id_rsa): [PATH/TO/YOUR/KEY]

サーバ側設定

基本設定

$ sudo vi /etc/ssh/sshd_config

で最終的には

PasswordAuthentication no # パスワードでのログイン
PermitRootLogin no # rootでのログイン
PermitEmptyPassword no # 空パスワードでのログイン

を最終的に設定させればいいと思われます。

公開鍵の登録

$ scp id_rsa.pub user@remote:~/

で公開鍵を登録した後、リモートにログインして

$ cat id_rsa.pub >> .ssh/authorized_keys

で登録すればok

$ ssh-add /PATH/TO/KEY

をするか再起動すればたいていうまくいきます。