擬似乱数生成器の評価
TRANSCRIPT
@miyakawa_taku
JJUG幹事
SI屋で賃労働
尾上部屋の里山関のファンです
オレオレJVM言語Kinkを作っています
https://bitbucket.org/kink/kink
(型はないよ)
自己紹介 #jjug
2/12
#jjug要旨
Kinkの標準擬似乱数生成器として
WELL1024aというアルゴリズムを
採用しました
RubyやRなどで用いられている
Mersenne Twisterに比べて
よりバラけるから素敵らしいです
3/12
「乱数」の種類 #jjug
サイコロハードウェア乱数生成器
特殊なCPU命令
使用例 : SecureRandomの種を作る
真の乱数 : 数列が再現できない
擬似乱数 : 種を元に数列が再計算できる
暗号論的に安全な擬似乱数 そうでもない擬似乱数
java.util.SecureRandom java.util.Random
例 : 暗号鍵を作る 例 : シミュレーション
4/12
バラけかたの見方(かんたん版) #jjug
乱数列→ 31 41 59 26 53 58 97 93 23 84 ...
x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 ...
(x i , y i )を二次元平面にプロットしてみる
7/12
#jjugバラけかたの見方(☆本格的☆)
dieharderコマンド:
バイト列を入力に取る
入力がどれくらいバラけているか、
複数種類のテストを流す .
中のアルゴリズムを勘案せず、
ブラックボックス的にテストする
10/12
#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
#jjug続きはWebで!
http://d.hatena.ne.jp/miyakawa_taku/2
0141231
12/12