Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

擬似乱数生成器の評価

3,567 views

Published on

Properties and evaluation methods of pseudo random number generators.

CC Attribution Licenseで公開します。

Published in: Technology
  • Be the first to comment

擬似乱数生成器の評価

  1. 1. 擬似乱数生成器の評価 2015-08-10 大ビール大会 ハッシュタグ: #jjug 宮川 拓
  2. 2.  @miyakawa_taku  JJUG幹事  SI屋で賃労働  尾上部屋の里山関のファンです  オレオレJVM言語Kinkを作っています https://bitbucket.org/kink/kink (型はないよ) 自己紹介 #jjug 2/12
  3. 3. #jjug要旨 Kinkの標準擬似乱数生成器として WELL1024aというアルゴリズムを 採用しました RubyやRなどで用いられている Mersenne Twisterに比べて よりバラけるから素敵らしいです 3/12
  4. 4. 「乱数」の種類 #jjug サイコロ ハードウェア 乱 数 生 成 器 特殊なCPU 命 令 使用例: SecureRandomの種を作る 真の乱数 : 数列が再現できない 擬似乱数 : 種を元に数列が再計算できる 暗号論的に安全な擬似乱数 そうでもない擬似 乱 数 java.util.SecureRandom java.util.Random 例: 暗 号 鍵 を 作 る 例 : シミュレーション 4/12
  5. 5. #jjug擬似乱数生成器の評価基準  速いこと  暗号論的に安全なこと(必要なら)  途中までの数列から以降が推測できない  途中の内部状態がバレてもそれ以前の 数列が推測できない  バラけること 5/12
  6. 6. バラけるってなにさ #jjug 6/12
  7. 7. バラけかたの見方(かんたん版) #jjug 乱数列→ 31 41 59 26 53 58 97 93 23 84 ... x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 ... (xi, yi)を二次元平面にプロットしてみる 7/12
  8. 8. それなりの擬似乱数 #jjug glibcのrand() 下位10ビット だいたい バラけてそう 8/12 なんか日本地図が 見える気がする
  9. 9. よくない擬似乱数 #jjug 昔のUnixの rand() 下位10ビット これはひどい 9/12 ドット柄で シャレオツ
  10. 10. #jjugバラけかたの見方(☆本格的☆) dieharderコマンド:  バイト列を入力に取る  入力がどれくらいバラけているか、 複数種類のテストを流す.  中のアルゴリズムを勘案せず、 ブラックボックス的にテストする 10/12
  11. 11. #jjugdieharderの結果 110 112 112 99 112 4 2 2 6 2 9 114 Well1024a glibc Mersenne Twister JavaのRandom 昔のUnix glibc PASSED WEAK FAILED パッと見赤いのは厳しい でも、青けりゃいいってもんじゃないみたい (アルゴリズムの中身を見てないので) 11/12
  12. 12. #jjug続きはWebで! http://d.hatena.ne.jp/miyakawa_taku/2 0141231 12/12

×