2016年12月6日火曜日

SM孵化の乱数列生成アルゴリズムについて

はじめに

これはPokémon RNG Advent Calendar 2016の6日目の記事です.ここ数日でSM孵化の仕組みの検証が進み,乱数列生成方法についても解明に至ったのでまとめます.SM孵化の仕組みについてはろいしん氏のSM孵化仕組み検証 を読んで下さい.

乱数列生成アルゴリズムについて

oupo氏の助けもあり,ぽけりんのBBSへの書き込みと,ポケットモンスターサンの説明書から乱数列生成アルゴリズムにはTiny MTが使われていることがわかりました.
Tiny MTにはmat1, mat2, tmatの3つのパラメータがありますが,それぞれ0x8f7011ee, 0xfc78ff1f, 0x3793fdffだとわかりました.これはTiny MTのsample.cのものと同じです.
実際に使われる乱数はTiny MTの127bitの内部状態に調律を施した32bitの値が使われます.Tiny MTの発明者の実装において関数tinymt32_temperの返り値がこれにあたります.実際にBBSへの書き込みにある性格値などを生成することを確認しました.
確認に用いたソースコードはこちらにあります.
さき氏がBBSの書き込みを表にまとめました.破棄0の遺伝箇所あ合ってないのはコピペミス?

SM孵化の乱数調整に向けて

乱数調整を行うには
  • 現在のseedの確認方法の確立
  • 乱数列生成アルゴリズムの解明
  • スキームの解明
  • 効率的な乱数消費法
が必要になります. 今回Tiny MTが乱数列生成アルゴリズムだとわかりました.また孵化のスキームもろいしん氏の検証により解明されつつあります.
現時点では乱数を消費する方法は受取拒否しか見つかっていません.数十のオーダ以上で消費すること考えると非現実的でしょう.
追記: 卵を受け取ることでいくつか乱数を消費することが出来るので数十程度のオーダーなら問題になりません.
また現在のseedの確認方法の確立 については,パッチールの受け取りとリセットを繰り返し模様を観察することで,現在のseedを確認出来るようになるかもしれないとの予想はありますが,確証には至ってません.
Tiny MTへの理解が進めば可能になるかもしれませんが,何れにせよ「時間をいじれば簡単にできる」みたいな乱数調整とは異なるので注意が必要です.

2016年9月20日火曜日

夏休みに関東で食べたやつ

8月14日から27日まで東京に滞在していてそのときに食べた麺などを晒す.本当は記憶が新しいうちに書きたかったけど,東京に滞在した後すぐタイやアメリカに行っていたので時間がなかった.

8月14日

俺の空(新宿) 掛け豚そば
フォロワーの人と新宿でご飯を食べることになって,手元のメモに「俺の空(新宿,馬場,池袋) たまねぎ」とあったので行ってみた.麺は細麺で,珍しいなあと思いながら食べていた.確かにたまねぎだった.



8月15日

武蔵野アブラ学会(早稲田) 油そば
一度は行ってみたいと思い続けていた麺屋.一緒に行った人の魔法の力でご飯が付いてきた.巷では「油そばは低カロリーでラーメンよりヘルシー」みたいなことを聞くけど,確かにそうで食べやすくあっという間に完食出来た.油そばはおやつ.


8月16日

東京油組総本店(赤坂見附) 油そば
テレビかどこかで見たことがあるお店だったので入ってみた.前日に行った学会はお腹の様子をみて並盛りを注文をしたけど,この日はお腹が空いていたので大盛りを注文した.大盛りでは油そばはヘルシーだしおやつ感覚でスルッと完食出来た.

8月17日

六厘舎(東京) つけ麺
東京駅のラーメンストリートにあるお店.この日も行列が出来ていて40分ぐらい並んだ.この前東京に行った時に一度足を運んだことがあったが,美味しいスープをまた飲みたくなったのでリピーターになった.やはり美味しかった.つけ麺は飲み物なのでスルッと完飲した.

8月20日

麺屋武蔵(池袋) 二天
元々池袋にある寵児に行くつもりだったけど改装工事だった.手元のメモを確認すると「麺屋武蔵 二天 つけ麺(池袋」とあったのでここに決めた.メモを残しておいて正解だったと思った.麺屋武蔵は上野のお店に行った経験があったけど,そのお店とは違ってつけ麺の上にとり天が2つ乗っていた.量がしっかりあって14時頃にその日初めての食べ物として食べたけど満腹になった.

8月21日

蔭山(早稲田)
最初は図星に行くつもりだったけど図星は閉まりがちということでその日はやっていなかった.どこで食べようかって言いながらぶらぶら歩いた結果このお店になった.球体のような形の器にラーメンが盛られていておしゃれだった.味も上品で大変満足した.

麺達 うま家(高田馬場)
1日2麺.元々フォロワーの人と「武道家からのセイクで優勝するぞ」という話だったが,僕が東京に滞在している期間の武道家は改装工事中で無理だった.仕方ないので他の家系ラーメンのお店に行った.ラーメンライスはアド!

8月22日

あぶらそば専門店 油油 ぶらぶら(赤坂) 油そば
15日に学会で油そばを食べた以来僕の中で油そばが熱く,この日も食べた.学会のものよりあっさりした味がしてとてもヘルシーだった.完全におやつ.

8月24日

五ノ神製作所(新宿) えびつけ麺
フォロワーの人と新宿で麺食べることになって,手元のメモに「五ノ神製作所(新宿)」とあったので足を運んだ.名前の通りエビ風味のつけ麺だけどえびは入っていないらしい.えびが大好きな人はすごい好きだと思った.

8月25日

メーヤウ 早稲田店 ハヤシライス
この記事唯一の非麺.今年の2月の東京に滞在していた時にも行ったがその時は入試シーズンと被っているとかでお店が閉まっていた.この日は無事営業していた.このお店はカレー屋さんなのだが,一緒に行った人にカレーは辛いとの忠告を受けてハヤシライスを注文した.その人の注文したカレーを少しもらったが実際とても辛かった.ハヤシライスは,これまでに食べたハヤシライスの中で一番美味しかった.


ごちそうさまでした.

2016年4月4日月曜日

パワポケ10野手メモ2

やっとオールA作れるようになった。嬉しい(購入から9年目)

いつかまたやる時に思い出せるようにメモ


最終的に目指す状態は次


練習



総合練習25回

練習手伝い5回

筋トレ10回

素振り5回

アルバイト6回


センス



守備5

肩力2

ミート1

パワー1


各年次の行動メモ


1年目



持ち込みは置物スーパーパワビタD*2
4月はランニング4回

200ペラはプロテイン*3とポテチ

学校から抜けだして得た30ペラは飯占にわんちゃん貢ぐ

野球魂なくなるまでアルバイトしてプロテイン

3年引退後は球ひろい

練習がパワーアップしたら総合練習を繰り返す

おみくじてバット手にはいらないときつい


2年目



新生活で下がったやる気はスーパーパワビタDで回復する

総合練習20回達成後は練習手伝い5回、アルバイト6回、筋トレ10回を目指す

秋の大会前にミートDパワーD辺りまで上げて起用されるのを待つ

3月2週目は回復すること


3年目



4月2週目にマウスうろつきで耐エラーアップを狙う

ダメだったら追加で5回総合練習


2016年2月1日月曜日

1月に借りた本

読んだとは言っていない

個人情報がどうので過去に図書館で借りた本の情報を引き出せないからメモっておくスタイル


2016年1月31日日曜日

人と会話するのが苦手です

多分、僕と通話したり会って話したことある人はご存知だと思いますが、僕は言葉を噛みやすいというか吃りやすいです。例えば「シリンダー」と発音したい時に「(息が掠れた音がする)...シリンダー」と単語の最初の音を発音するのに時間がかあったり、「おだん」と発音したい時に「お、お、おだん」と 単語の最初の音を何度も繰り返すことがあります。このような言葉を円滑に話せない障害は吃音症と呼ばれていて、恐らく僕もこれに分類されると考えています。


吃音症 - アンサイクロペディア

吃音症の概要に関してはアンサイクロペディアの方がわかりやすいと思っています。


分類としては連声型と無声型の両方の症状を持っていて、昔は伸発も持っていた記憶がありますが今は症状に現れません。


僕が滑舌が悪いと自覚し始めたのは高校1年生になって新しい環境で自己紹介をする時でした。自分の名字の最初の音や、その頃陸上部に入部しようと考えていたのでそのことを告げるための「陸上」の「り」が発音しづらいと感じました。でもその時はあまり深く考えず過ごしました。
次に僕が滑舌が悪いと自覚したのは吃音症という病気を知った高校2年生の時でした。Twitter吃音と言う単語が目につき調べてみるとまさに自分が体験してきたことがネットに転がっていて驚いた記憶があります。この頃から人と会話をするのがつらく感じるようになりました。
自覚し始めたのは高校の頃ですが、この病気の症状が出始めたのは小学校が同じだった友達に「まだ滑舌が悪いの治ってないのか」と言われたことがあるので小学校の頃からだと考えられます。小学校に上る前の頃に母親の事を「おーーーかあさん」呼んで家族に笑われた記憶があるので、もしかしたら言葉を話せるようになった頃からあったのかもしれません。

また独り言なら吃らないみたいなことをたまに聞きますが僕には当てはまらないようです。なぜなら最近独り言を録音するようになったのですがその時にも言葉をうまく発音出来ないなあと感じることがあります。それでも人と会話してる時みたいに文節単位で吃ることはないので、ある程度は軽減されるようです。


吃音症を持っている人の会話の特徴として言い換えがあります。これは言葉を話していてると事前に自分が発音できない単語がわかるので、それを自分が発音できる単語に言い換えることです。例えば「人」を「人間」や「(通話)している」を「(通話)やっている」などに言い換えます。これを使えばある程度の長さの文章を相手に伝えることが出来るのですが、長い文章となると言い換えを多用した結果意味の通らない文章となって相手に理解されないばかりでなく自分で何を言っているのかわからなくなるので、話している最中に自分で会話を中断することがあります。高校の頃部活の先輩にこれをしてしまって怒られたことがあります。

また言い換えの出来ない固有名詞などはどうしても回避することができません。上に書いたように僕の場合は名字やHNの最初の音が発音できないため、自己紹介がとても苦手です。大学で知り合いを作るのは大変でした。今でも新しい人と会話するには自分の名前を名乗らないといけないので、新しい人と話そうと思いません。

他の特徴として随伴運動という、喋る時に身体が不自然な動きをするものがあります。僕の場合は握りこぶしを口元へ持っていくことや手で胸の辺りを叩くことがこれに当たるみたいです。実際にこうすることで次の言葉が出やすくなるわけでもないと思うんですが、沈黙による間が嫌だったり言葉が出ないことによる焦りからこうしてしまいます。


こんな症状を持っているため会話の掛け合いには参加できないし、盛り上がっている会話に入って単語を発音できないために盛り上がりに水を差すのが怖くて会話に入ろうとしません。自覚しているのにオフ会に出たりホイホイ人と会ったりしているあたり歩く地雷だなあと時々思います。

まあ、周りの人からすると頑張って話しているなあ程度にしか見られないだろうなあと最近思うようになりました。


就活の面接で失敗する未来しか見えない。悲しい。


2016年1月23日土曜日

AIメモ2

[pdf]反復深化探索に基く協力詰将棋の解法


通常の詰将棋は先手後手共に最善手を打つのに対して、協力詰めの後手は最悪(先手にとっての最善)手を打つ詰将棋。通常の詰将棋はAND/OR木の探索問題として定式化できるのに対して、協力詰めはOR木の探索問題として定式化できる。


協力詰めの特性上、同じ局面で手数が異なる場合は手数が少ないほうが優秀であるため、反復深化深さ優先探索を行いながら置換表に局面を登録していく。こうすると置換表には手数の少ない局面から登録されることになり、ある局面が置換表に登録済みならそれを再利用すれば良い。


あるノードが確定局面とは、そのノードが葉であるか子ノード全てが確定局面であることである。また、確定局面を根とする部分木を考えると、その部分木は一度探索され置換表に記憶されている。しかし置換表を用いた枝刈りの特性上、確定局面を根とする部分木は根を除いて探索されることがない。他の探索で参照される可能性はあるが、ある程度雑に扱う(上書きを許す)ことでメモリの有効利用に繋がる。


反復深化と置換表は相性いいって聞くんだけど、どうも理解できない


2016年1月9日土曜日

AIメモ1

[pdf]麻雀の牌譜からの打ち手評価関数の学習

「麻雀 評価関数」でググると一番上に出てくるやつ。麻雀知らない頃に一度読んで内容理解できず諦めた経験がある

内容は、ツモ局面と鳴き局面において知り得る情報だけを用いて、ニューラルネットワークを使用した評価関数で自分の利益を最大にするように手を打つ。実質的に深さ1のminmaxと変わらない。

ある合法手と牌譜中で実際に打たれた手の一致度をシグモイド関数で表して、その総和が小さくなるように評価関数のパラメータを調整する。シグモイド関数を使うのはx=0付近で傾きが大きいからとか。

カン、リーチ、上がりの基準をそれっぽい風に決めて実際にネットの麻雀サイトで174試合打たせると下位13%程度。役考慮してないし仕方ないよねって結論