Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
乱数調整と謎乱数の話
みなさん, こんにちは
自己紹介
HN: mizdra
学域1年生Ⅰ類CSプログラム
趣味: プログラミング, ポケモン, 乱数ツールの作成
サン買ったよ!
今日はポケモンと乱数調整の話です
時間がなくてポケモンのゲームシステムについての解説はあま
り用意してない
謎乱数とは…
その前に乱数調整について説明します
乱数調整とは
次に得られる乱数を予測し, 狙った乱数を得ること
例
サイコロを11回振ってた時, 何かしらの手法を使って今まで得
られた出目から12回目の出目を予測する
何かしらの手法の例: 未来を読む(神になれば出来る)
n回目 1 2 3 ...
擬似乱数
扱う乱数が擬似乱数であれば次の乱数を予測することが出来る
ポケモンの第四世代で用いられる擬似乱数の定義
S[n+1] = (0x41C64E6D * S[n] + 0x6073) % 0x100000000
線形合同法(LCG)と呼ば...
乱数性を高めるためのちょっとした工夫
S[n+1] = (0x41C64E6D * S[n] + 0x6073) % 0x100000000
↑ ↑
奇数 奇数
「奇数*偶数+奇数」 は奇数
「奇数*奇数+奇数」 は偶数
この擬似乱数列は 偶数...
初期Seedの計算方法
S_0 = (((month * day + minute + second) * 0x1000000)
+ (hour + 0x10000)
+ (frame + year - 2000)) mod % 0x10000...
例
2016年11月26日3時10分10秒丁度にDSのメニューからゲームを選
択し, 2016年11月26日3時10分30秒丁度に「つづきからはじめる」
を押したとすると, 初期Seedは以下のようになります.
S_0 = (((11 * 26...
消費方法
主な消費方法
消費数 ランダムな事象
1
ウツギ博士に電話を掛ける(通話内容の決定で乱数が消費さ
れる)
1
録音した音声を鳴き声として設定したペラップの鳴き声を聞
く(鳴き声を聞く度に音の高さが変わる, 音の高さの決定で乱
数が消費...
初期Seedと消費を調整する力は手に入れた
後は乱数調整するのみ
「乱数調整出来る俺つえ~」で
終わりにするのは面白くない
どうせやるなら
アホみたいな乱数調整 をしよう
これを有用性が皆無という意味で
謎乱数(謎乱数調整)と呼んでいます
ペラップ乱数
ペラップ乱数
ドレミ~レド・ドレミレドレ~
ペラップがチャルメラの音を真似します。
http://blastoise‑x.hatenablog.com/entry/2013/04/03/014951
ペラップ(録音した好きな音声をその鳴き声とし...
バトルファクトリー乱数
バトルファクトリーと呼ばれるポケモン対戦施設がある
主人公は施設側でランダムに用意されたトレーナーをレンタルし,
ランダムに選ばれた対戦相手と戦う
バトルファクトリー乱数では, レンタルポケモンと対戦相手を
乱数調整する...
自販機乱数
自販機乱数
ゲーム内に設置されている当たり付き自販機で当たりを出す話
 r(n) % 64 == 0 のとき当たりが出る
当たった後にまた当たり判定が行われるので...
200円でおいしいみずを購入
「あたりだ! もういっぽんおいしいみずがでて...
まだ終わらない
BW(第五世代のソフト)だと最大連続当たり回数の上限がもう少し高
く設定されている
自販機で当たりを引くのが0x08000000以下の時であり、これは
配達員検索時の個体値が0の時と同じそうなのでSSS4を使い6連続
当たる初期...
宣伝
PokémonRNG Advent Calendar やります
乱数調整で色違いのポケモンを捕獲する方法
乱数調整でゲーム内のくじで特等の商品を当てる方法
各世代(第三世代, 第四世代, ...)での乱数事情
未だ十分に解析されていないランダム...
乱数調整と謎乱数の話
Prochain SlideShare
Chargement dans…5
×

乱数調整と謎乱数の話

4 076 vues

Publié le

Dentoo.LT #15.5 (https://atnd.org/events/82737) のLT飛び入り枠で発表したスライドです.

Publié dans : Ingénierie

乱数調整と謎乱数の話

  1. 1. 乱数調整と謎乱数の話
  2. 2. みなさん, こんにちは
  3. 3. 自己紹介 HN: mizdra 学域1年生Ⅰ類CSプログラム 趣味: プログラミング, ポケモン, 乱数ツールの作成 サン買ったよ! 今日はポケモンと乱数調整の話です 時間がなくてポケモンのゲームシステムについての解説はあま り用意してない
  4. 4. 謎乱数とは… その前に乱数調整について説明します
  5. 5. 乱数調整とは 次に得られる乱数を予測し, 狙った乱数を得ること 例 サイコロを11回振ってた時, 何かしらの手法を使って今まで得 られた出目から12回目の出目を予測する 何かしらの手法の例: 未来を読む(神になれば出来る) n回目 1 2 3 4 5 6 7 8 9 10 11 12 出目 1 3 4 3 2 6 1 5 4 2 1 ?
  6. 6. 擬似乱数 扱う乱数が擬似乱数であれば次の乱数を予測することが出来る ポケモンの第四世代で用いられる擬似乱数の定義 S[n+1] = (0x41C64E6D * S[n] + 0x6073) % 0x100000000 線形合同法(LCG)と呼ばれる擬似乱数生成法 この漸化式で定義される数列を擬似乱数列と呼ぶ 新しい乱数を得ることを消費と呼び, ランダムな事象が発生す る度に乱数が消費されていく(n++) 以降はポケモンの乱数調整, LCGについて話します
  7. 7. 乱数性を高めるためのちょっとした工夫 S[n+1] = (0x41C64E6D * S[n] + 0x6073) % 0x100000000 ↑ ↑ 奇数 奇数 「奇数*偶数+奇数」 は奇数 「奇数*奇数+奇数」 は偶数 この擬似乱数列は 偶数, 奇数, 偶数, 奇数, ... を繰り返す 乱数性とは… この繰り返しを避けるためにポケモンでは S[n] >> 16 を乱 数として使用している(実擬似乱数列 r[n] = S[n] >> 16 と 定義)
  8. 8. 初期Seedの計算方法 S_0 = (((month * day + minute + second) * 0x1000000) + (hour + 0x10000) + (frame + year - 2000)) mod % 0x100000000  month ,  day 等の日時は「つづきからはじめる」を押した瞬間の ハードウェアに設定された日時が使われる ハードウェアの日時は自分で変更することが可能  frame はDSを起動してソフトを選択し, ゲームが起動した瞬間か ら「つづきからはじめる」を押した瞬間までの時間をフレーム(単位 の記号はF, 1秒≒60F)という単位に換算したもの
  9. 9. 例 2016年11月26日3時10分10秒丁度にDSのメニューからゲームを選 択し, 2016年11月26日3時10分30秒丁度に「つづきからはじめる」 を押したとすると, 初期Seedは以下のようになります. S_0 = (((11 * 26 + 10 + 10) * 0x1000000) + (3 + 0x10000) + (((30 - 10) * 60 - 649) + 2016 - 2000)) mod % 0x1000000
  10. 10. 消費方法 主な消費方法 消費数 ランダムな事象 1 ウツギ博士に電話を掛ける(通話内容の決定で乱数が消費さ れる) 1 録音した音声を鳴き声として設定したペラップの鳴き声を聞 く(鳴き声を聞く度に音の高さが変わる, 音の高さの決定で乱 数が消費される) 1 当たり付き自販機で飲み物を買う(当たり/はずれの判定で乱 数が消費される) 手持ち ポケモ ンの数 128歩歩く(128毎歩くたびに行われる手持ちポケモンのなつ き度判定で乱数が消費される) ウツギ博士に10回電話を掛ければ n+=10 
  11. 11. 初期Seedと消費を調整する力は手に入れた 後は乱数調整するのみ
  12. 12. 「乱数調整出来る俺つえ~」で 終わりにするのは面白くない どうせやるなら アホみたいな乱数調整 をしよう これを有用性が皆無という意味で 謎乱数(謎乱数調整)と呼んでいます
  13. 13. ペラップ乱数
  14. 14. ペラップ乱数 ドレミ~レド・ドレミレドレ~ ペラップがチャルメラの音を真似します。 http://blastoise‑x.hatenablog.com/entry/2013/04/03/014951 ペラップ(録音した好きな音声をその鳴き声として設定出来る, 鳴き 声を発する度に音の高さが変わる)というポケモンの鳴き声の音の高 さを調整して素敵な音を奏でる話
  15. 15. バトルファクトリー乱数 バトルファクトリーと呼ばれるポケモン対戦施設がある 主人公は施設側でランダムに用意されたトレーナーをレンタルし, ランダムに選ばれた対戦相手と戦う バトルファクトリー乱数では, レンタルポケモンと対戦相手を 乱数調整する イカサマをしても勝つのは難しい
  16. 16. 自販機乱数
  17. 17. 自販機乱数 ゲーム内に設置されている当たり付き自販機で当たりを出す話  r(n) % 64 == 0 のとき当たりが出る 当たった後にまた当たり判定が行われるので... 200円でおいしいみずを購入 「あたりだ! もういっぽんおいしいみずがでてきた!」 「あたりだ! もういっぽんおいしいみずがでてきた!」 「あたりだ! もういっぽんおいしいみずがでてきた!」 第四世代では最大で連続三回当たり判定が行われます 挑戦者の紹介 多分これが一番無駄だと思います。 ‑ ろいしんぶろぐ
  18. 18. まだ終わらない BW(第五世代のソフト)だと最大連続当たり回数の上限がもう少し高 く設定されている 自販機で当たりを引くのが0x08000000以下の時であり、これは 配達員検索時の個体値が0の時と同じそうなのでSSS4を使い6連続 当たる初期seedを探すことが出来ます。 http://d.hatena.ne.jp/milk4724/20130202/1359437354 最大7連続当たりを狙うことができるそうです
  19. 19. 宣伝
  20. 20. PokémonRNG Advent Calendar やります 乱数調整で色違いのポケモンを捕獲する方法 乱数調整でゲーム内のくじで特等の商品を当てる方法 各世代(第三世代, 第四世代, ...)での乱数事情 未だ十分に解析されていないランダムな事象の調査(戦闘乱数等) 乱数調整でゲーム内に設置されている自販機で当たりを出す エミュレータでポケモンの乱数調整をする話

×