タグ

*algorithmと乱数に関するsh19910711のブックマーク (5)

  • 第5世代でペラップの鳴き声だけから64bit LCGのseedを見つける - oupoの日記

    概要 Mathematica (or Wolfram Cloud)を使ったら、ペラップの鳴き声だけから64bit LCGのseedを特定できた。 これは64bit LCGの上位5bitの連続した値を13個観測してseedを十分現実的な時間で復元したことになる。 内容 第5世代のポケモンでは64bitの線形合同法 (LCG)を疑似乱数の一部に使っている。 ペラップというポケモンのおしゃべりという特別な技において、マイクで収録した音を再生でき、その音程は再生するたび変わる。そこにLCGが使われている。 その音程の情報だけからLCGのseedを特定できたというのが今回の内容である。 計算時間はWolfram Cloud上でおよそ14秒である。 なお、このゲームのseedは現在時刻などのパラメータから決定されており、それはツールから完全に再現可能になっているので、このゲームの乱数調整には今回の結果

    第5世代でペラップの鳴き声だけから64bit LCGのseedを見つける - oupoの日記
    sh19910711
    sh19910711 2022/04/02
    "第5世代のポケモンでは64bitの線形合同法 (LCG)を疑似乱数の一部に使っている / おしゃべりという特別な技においてマイクで収録した音を再生でき、その音程は再生するたび変わる / その音程の情報だけからLCGのseedを特定"
  • テトリミノの偏り補正から見るテトリスの歴史

    レトロゲーム勉強会#04 https://retrog.connpass.com/event/153204/ での発表資料です。資料公開にあたり、ゲームボーイ版テトリスの記述を中心に追記を行っています。Read less

    テトリミノの偏り補正から見るテトリスの歴史
  • SFC版風来のシレンの乱数生成アルゴリズムの話 考察編 - Qiita

    この記事は続編です。 前回の記事で、SFC版風来のシレンのROMデータの解析内容を元に乱数がどのようにして生成されているかを解説しています。そちらを読んでからこの記事を読んでいただくと、より内容を理解しやすいかと思います。 前回の記事:SFC版風来のシレンの乱数生成アルゴリズムの話 解析編 SFC版風来のシレンの乱数の品質を調べる さて前回の記事でSFC版風来のシレンの乱数生成アルゴリズムが線形帰還シフトレジスタの一種であることが分かりました。 しかし乱数生成アルゴリズムは理解したものの、それによって生成された乱数が妥当な物なのかというのはアルゴリズムを見ただけでは分かりません。 シレンの乱数は偏りやすいと断言できるような目に見えて質が悪いものなのでしょうか。 この項でそれを考察してみたいと思います。 先にお断りしておきますが、気で定量的・客観的に乱数の品質を検証しようと思うと格的な統

    SFC版風来のシレンの乱数生成アルゴリズムの話 考察編 - Qiita
  • all that jazz - Cracking Random Number Generators - Part 3

    james' blog about scala and all that jazz About Cracking Random Number Generators - Part 3 In Part 1 and Part 2 of this series we focussed on one of the simplest PRNG's, the linear congruential PRNG. We looked at detail into Java's implementation, and then wrote algorithms to crack the seed, and to calculate previous seeds from the current seed. Not many other languages use a linear congruential P

  • Cのrand()よりmt19937の方が速いことがあるという話 - Educational NLP blog

    おはようございます。2年ぶりの記事ですね。 もう1月程前になってしまいましたが、id:sleepy_yoshi:20130720 で id:sleepy_yoshi さんが高速な非復元抽出をやっておられ、その中で、Cのrand関数を使っておられました。僕は、普段、std::mt19937を使っていたので、ちょっと比較してみた、という記事です。 C++11では、大別して、2つの擬似乱数生成の方法があります。1つはC(cstdlib)のrand関数で、高速ですが乱数の質が低く、もう1つはrandomヘッダのmt19937(メルセンヌ・ツイスタ)で、低速ですが乱数の質が高い(科学実験に適する)と、一般には思われていると思います。この高速・低速ですが、mt19937を使うことがボトルネックになるほど遅いことは殆どない、というのが今までの実感でした。なので、僕は、非復元抽出のような処理では、特にボト

    Cのrand()よりmt19937の方が速いことがあるという話 - Educational NLP blog
  • 1