バトルファクトリーの最初の6匹を解析してみる その7
30件じゃデータが足りないので、新たに144件データを取った。合計174件。
データはgithubで公開中。 GitHub - oupo/factory-log
そのシャッフルの結果を集計してみた。
-- 0 1,2,3,4,5,6: 6 -- 2 1,2,3,6,5,4: 6 1,2,6,4,5,3: 4 1,6,3,4,5,2: 4 1,5,3,4,2,6: 6 1,2,5,4,3,6: 6 1,2,3,5,4,6: 2 1,2,3,4,6,5: 12 6,2,3,4,5,1: 5 5,2,3,4,1,6: 1 -- 3 1,2,3,5,6,4: 5 1,6,3,4,2,5: 7 5,2,3,4,6,1: 14 1,2,3,6,4,5: 5 6,2,3,4,1,5: 2 1,5,3,4,6,2: 10 1,2,6,4,3,5: 6 1,2,5,4,6,3: 9 -- 4 6,2,5,4,3,1: 8 6,5,3,4,2,1: 5 1,5,6,4,2,3: 4 1,5,3,6,2,4: 7 5,2,6,4,1,3: 6 5,2,3,6,1,4: 6 6,2,3,5,4,1: 5 1,6,5,4,3,2: 3 1,2,6,5,4,3: 4 5,6,3,4,1,2: 4 1,6,3,5,4,2: 6 1,2,5,6,3,4: 6
- 3回のswapを必要とするようなパターンはやっぱりない
- 1〜4番目で元の位置が同じだったもの以外は5か6しかやっぱりない
- 「5,2,3,4,6,1」が多くて逆に「6,2,3,4,1,5」が少ない。
シャッフル方法が「5番目の位置とランダムな位置をswap、6番目の位置とランダムな位置をswap」と仮定すると:
5,2,3,4,6,1は「5<->6, 6<->1」と「5<->1, 6<->5」のパターンがある。6,2,3,4,1,5は「5<->1, 6<->1」のパターンしかない。
「1,2,3,4,6,5」が多いのも「5<->5, 6<->5」と「5<->6, 6<->5」の二パターンあるから?
とりあえず適当にシャッフル結果が「1,2,3,6,5,4」であるseedの6匹の性格値決定後の乱数 % 6を調べてみた。
log/20091021-019.txt 554: 0x67b4f366 4 555: 0x711916e1 3 log/20091021-020.txt 472: 0x54e85a92 4 473: 0x11736c9d 3 log/20091021-033.txt 379: 0xd9f0a671 4 380: 0x8a93ac90 3 log/20091021-048.txt 224: 0xe35c79d6 4 225: 0x8d037491 3 log/20091021-055.txt 252: 0x60402398 4 253: 0xa5b7d82b 3 log/20091021-117.txt 561: 0xaa388f2f 4 562: 0x630fa976 3
見事に全部一致!
「1,2,3,6,5,4」のswapは5<->5, 6<->4。プログラム中では0 originと考えられるので4<=>"4", 5<=>"3"。ほら、swap結果とも一致している!
ほかのも見てみよう。「5,2,3,4,6,1」は「5<->6, 6<->1」と「5<->1, 6<->5」の二パターンあるので「5,0」と「0,4」が出てくるはず!
log/20091020-005.txt 256: 0xf1fdeafe 5 257: 0xa52ad299 0 log/20091020-007.txt 251: 0x8d2f136b 5 252: 0xa4b83f02 0 log/20091020-016.txt 146: 0xe7b9f198 5 147: 0xc5588e2b 0 log/20091021-013.txt 224: 0x24d779d6 5 225: 0xe8627491 0 log/20091021-014.txt 238: 0x4ed23264 0 239: 0xf8324d07 4 log/20091021-015.txt 365: 0x7607a4db 5 366: 0xb1de4bb2 0 log/20091021-021.txt 453: 0x44b197d9 5 454: 0xe6b825d8 0 log/20091021-044.txt 600: 0x6b512bd4 5 601: 0x26e2a1b7 0 log/20091021-079.txt 315: 0x72a76107 5 316: 0xa33ed26e 0 log/20091021-081.txt 283: 0x4e47800f 5 284: 0xf81078d6 0 log/20091021-102.txt 244: 0x11bda532 5 245: 0xccc0f2bd 0 log/20091021-132.txt 278: 0xe68e15f0 0 279: 0x5cced7a3 4 log/20091021-139.txt 597: 0x34979fa9 5 598: 0xfcead968 0 log/20091021-144.txt 216: 0x31c8d61e 0 217: 0x9cf4af39 4
やっぱりその通りだ!
シャッフル結果とswapの表を作ってみた。
6,2,3,4,1,5: [0,0] 6,5,3,4,2,1: [1,0] 6,2,5,4,3,1: [2,0] 6,2,3,5,4,1: [3,0] 6,2,3,4,5,1: [4,0] 5,2,3,4,6,1: [5,0],[0,4] 5,6,3,4,1,2: [0,1] 1,6,3,4,2,5: [1,1] 1,6,5,4,3,2: [2,1] 1,6,3,5,4,2: [3,1] 1,6,3,4,5,2: [4,1] 1,5,3,4,6,2: [5,1],[1,4] 5,2,6,4,1,3: [0,2] 1,5,6,4,2,3: [1,2] 1,2,6,4,3,5: [2,2] 1,2,6,5,4,3: [3,2] 1,2,6,4,5,3: [4,2] 1,2,5,4,6,3: [5,2],[2,4] 5,2,3,6,1,4: [0,3] 1,5,3,6,2,4: [1,3] 1,2,5,6,3,4: [2,3] 1,2,3,6,4,5: [3,3] 1,2,3,6,5,4: [4,3] 1,2,3,5,6,4: [5,3],[3,4] 1,2,3,4,6,5: [4,4],[5,5] 1,2,3,4,5,6: [5,4],[4,5] 5,2,3,4,1,6: [0,5] 1,5,3,4,2,6: [1,5] 1,2,5,4,3,6: [2,5] 1,2,3,5,4,6: [3,5]