SlideShare a Scribd company logo
擬似乱数生成器の評価
2015-08-10 大ビール大会
ハッシュタグ: #jjug
宮川 拓
 @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擬似乱数生成器の評価基準
 速いこと
 暗号論的に安全なこと(必要なら)
 途中までの数列から以降が推測できない
 途中の内部状態がバレてもそれ以前の
数列が推測できない
 バラけること
5/12
バラけるってなにさ
#jjug
6/12
バラけかたの見方(かんたん版) #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
それなりの擬似乱数 #jjug
glibcのrand()
下位10ビット
だいたい
バラけてそう
8/12
なんか日本地図が
見える気がする
よくない擬似乱数 #jjug
昔のUnixの
rand()
下位10ビット
これはひどい
9/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

More Related Content

PPTX
進化ゲーム理論の枠組みを用いたソーシャルゲームにおけるユーザの利他的行動の分析
PDF
楕円曲線入門 トーラスと楕円曲線のつながり
PDF
ユーザーインタビューするときは、どうやらゾンビのおでましさ
PDF
2023/06/01 IoT ALGYAN ChatGPT研究会第9弾 資料
PDF
企業の中の経済学
PDF
[DL輪読会]NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
PDF
(研究会輪読) Weight Uncertainty in Neural Networks
PPTX
Hessian free
進化ゲーム理論の枠組みを用いたソーシャルゲームにおけるユーザの利他的行動の分析
楕円曲線入門 トーラスと楕円曲線のつながり
ユーザーインタビューするときは、どうやらゾンビのおでましさ
2023/06/01 IoT ALGYAN ChatGPT研究会第9弾 資料
企業の中の経済学
[DL輪読会]NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
(研究会輪読) Weight Uncertainty in Neural Networks
Hessian free

What's hot (20)

PPTX
機械学習を用いたfNIRSの解析手法の提案
PDF
オセロの終盤ソルバーを100倍以上高速化した話
PDF
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
PPTX
Triplet Lossによる Person Re-identification
PDF
論文紹介:”Playing hard exploration games by watching YouTube“
PDF
階層ベイズとWAIC
PPTX
差分プライバシーとは何か? (定義 & 解釈編)
PDF
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
PDF
NLP2023 緊急パネル:ChatGPTで自然言語処理は終わるのか? 説明スライド
PDF
[DL輪読会]ICLR2020の分布外検知速報
PDF
いいからベイズ推定してみる
PDF
PsychoPy Builder:Code Componentの使い方
PDF
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
PDF
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
PPTX
『ゲームAI技術入門』講義用素材
PDF
ベイズ統計入門
PPTX
論文紹介: Fast R-CNN&Faster R-CNN
PDF
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
PDF
書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf
機械学習を用いたfNIRSの解析手法の提案
オセロの終盤ソルバーを100倍以上高速化した話
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Triplet Lossによる Person Re-identification
論文紹介:”Playing hard exploration games by watching YouTube“
階層ベイズとWAIC
差分プライバシーとは何か? (定義 & 解釈編)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
NLP2023 緊急パネル:ChatGPTで自然言語処理は終わるのか? 説明スライド
[DL輪読会]ICLR2020の分布外検知速報
いいからベイズ推定してみる
PsychoPy Builder:Code Componentの使い方
東北大学 先端技術の基礎と実践_深層学習による画像認識とデータの話_菊池悠太
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
『ゲームAI技術入門』講義用素材
ベイズ統計入門
論文紹介: Fast R-CNN&Faster R-CNN
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
書籍 「Python FlaskによるWebアプリ開発入門 物体検知アプリ&機械学習APIの作り方」 を通して伝えたいFlaskのプラクティス.pdf
Ad

Viewers also liked (16)

PDF
Kink の宣伝
PDF
Hadoop jobbuilder
PDF
Kink: invokedynamic on a prototype-based language
PDF
Summary of "Hacking", 0x351-0x354
PDF
Matrix Multiplication in Strassen Algorithm
PDF
Kink: プロトタイプベースの俺々 JVM 言語
PDF
コルーチンの実装について
PDF
Quasar: Actor Model and Light Weight Threads on Java
PDF
金勘定のためのBigDecimalそしてMoney and Currency API
PDF
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
PDF
Javaのログ出力: 道具と考え方
PDF
Prepare for Java 9 #jjug
PDF
楽して JVM を学びたい #jjug
PDF
Graph Algorithms Part 1
PDF
言語設計者が意味論を書くときに考えていたこと
PDF
Java SE 9の紹介: モジュール・システムを中心に
Kink の宣伝
Hadoop jobbuilder
Kink: invokedynamic on a prototype-based language
Summary of "Hacking", 0x351-0x354
Matrix Multiplication in Strassen Algorithm
Kink: プロトタイプベースの俺々 JVM 言語
コルーチンの実装について
Quasar: Actor Model and Light Weight Threads on Java
金勘定のためのBigDecimalそしてMoney and Currency API
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Javaのログ出力: 道具と考え方
Prepare for Java 9 #jjug
楽して JVM を学びたい #jjug
Graph Algorithms Part 1
言語設計者が意味論を書くときに考えていたこと
Java SE 9の紹介: モジュール・システムを中心に
Ad

More from Taku Miyakawa (6)

PDF
ラムダと invokedynamic の蜜月
PDF
Java Quine Golf
PDF
Processing LTSV by Apache Pig
PDF
Java 7 invokedynamic の概要
PDF
Java オブジェクトの内部構造
PDF
Kink: developing a programming language on the JVM
ラムダと invokedynamic の蜜月
Java Quine Golf
Processing LTSV by Apache Pig
Java 7 invokedynamic の概要
Java オブジェクトの内部構造
Kink: developing a programming language on the JVM

擬似乱数生成器の評価