SlideShare a Scribd company logo
1 of 10
擬似乱数について
Randomについての前提知識
皆さん
乱数はお好きですか?
僕は大好きです
良い乱数
• 乱数とは、その名の通り乱れた数です。
• 現実世界ではサイコロを振ったりして得ます。
• でたらめな数が次々得られると色々嬉しいです(ゲーム
とか)。
• 良い乱数とは、偏りがなく、次の目の予想が困難で、
素早く次々と値が取り出せるものです。
真の乱数
• コンピュータで真の乱数を発生させることは困難です
• 数の偏りが発生し、予想可能で、遅いです。
• while(true) if (x == 6) x = 1 else x +=1
• こんなコードを書くと、6ばっかり出ます。(^^;
• 偏りなく、予想が困難で、素早く生成できる乱数はコ
ンピュータの中には存在しません。
擬似乱数
• コンピュータでは擬似乱数を使用します
• 擬似乱数とは、周期のとても大きな関数です
• f(f(f(f(種))…
• f()に種を与えると計算結果を返します。
• その値をまたf()に与えると別の計算結果を返します。
• 以下繰り返し。
• いつか最初の値と同じ値が返ります。
• これが周期です。
イメージ
スタート位置を決め
る
後は周期を回る
擬似乱数の周期
いつかスタート位置
に戻る
種
• 擬似乱数のシードとは「スタート位置を決める」た
めの値です。
• スタート位置が同じなら、それ以降の計算の値はす
べて同じになります。
• スタート位置を決めるためには、プログラムの外か
ら副作用を取り込む必要が有り〼
• Haskellの場合、IOが必要になります。
イメージ
同じプログラムでもスタート位置は毎
回違う
つまり、純粋でない
セキュリティ
• 蛇足ですが、乱数の初期化はシステムにとって弱点
です。
• 種がバレると乱数がバレます。
• 乱数を利用してパスワードを生成するとパスワード
がバレます。

More Related Content

Viewers also liked

見つけた脆弱性について(cybozu.com Security Challenge)
見つけた脆弱性について(cybozu.com Security Challenge)見つけた脆弱性について(cybozu.com Security Challenge)
見つけた脆弱性について(cybozu.com Security Challenge)
Masato Kinugawa
 

Viewers also liked (15)

Smartphone security at ZenCoworking
Smartphone security at ZenCoworkingSmartphone security at ZenCoworking
Smartphone security at ZenCoworking
 
Introducing Apache Kafka's Streams API - Kafka meetup Munich, Jan 25 2017
Introducing Apache Kafka's Streams API - Kafka meetup Munich, Jan 25 2017Introducing Apache Kafka's Streams API - Kafka meetup Munich, Jan 25 2017
Introducing Apache Kafka's Streams API - Kafka meetup Munich, Jan 25 2017
 
見つけた脆弱性について(cybozu.com Security Challenge)
見つけた脆弱性について(cybozu.com Security Challenge)見つけた脆弱性について(cybozu.com Security Challenge)
見つけた脆弱性について(cybozu.com Security Challenge)
 
Large Scale Deep Learning with TensorFlow
Large Scale Deep Learning with TensorFlow Large Scale Deep Learning with TensorFlow
Large Scale Deep Learning with TensorFlow
 
An Overview of Android Things at jag201702
An Overview of Android Things at jag201702An Overview of Android Things at jag201702
An Overview of Android Things at jag201702
 
Android BLEのつらみを予防するTips
Android BLEのつらみを予防するTipsAndroid BLEのつらみを予防するTips
Android BLEのつらみを予防するTips
 
広告目線から見たHoloLens - 坪倉輝明
広告目線から見たHoloLens - 坪倉輝明広告目線から見たHoloLens - 坪倉輝明
広告目線から見たHoloLens - 坪倉輝明
 
Aws×phpでの 高信頼かつハイパフォーマンスなシステム
Aws×phpでの 高信頼かつハイパフォーマンスなシステムAws×phpでの 高信頼かつハイパフォーマンスなシステム
Aws×phpでの 高信頼かつハイパフォーマンスなシステム
 
DevLove関西_プロジェクトマネジメントの勘所
DevLove関西_プロジェクトマネジメントの勘所DevLove関西_プロジェクトマネジメントの勘所
DevLove関西_プロジェクトマネジメントの勘所
 
災害時における自治体によるメディアデザインの重要性
災害時における自治体によるメディアデザインの重要性災害時における自治体によるメディアデザインの重要性
災害時における自治体によるメディアデザインの重要性
 
React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門
 
MySQLアンチパターン
MySQLアンチパターンMySQLアンチパターン
MySQLアンチパターン
 
MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版
 
女性向けサービスでコンバージョン数を爆上げさせた話 〜ネイルブックが1年間でCV数を69倍にした方法〜
女性向けサービスでコンバージョン数を爆上げさせた話 〜ネイルブックが1年間でCV数を69倍にした方法〜女性向けサービスでコンバージョン数を爆上げさせた話 〜ネイルブックが1年間でCV数を69倍にした方法〜
女性向けサービスでコンバージョン数を爆上げさせた話 〜ネイルブックが1年間でCV数を69倍にした方法〜
 
Tourtech - Tourism × Tech - 地方創生プロジェクト
Tourtech - Tourism × Tech - 地方創生プロジェクトTourtech - Tourism × Tech - 地方創生プロジェクト
Tourtech - Tourism × Tech - 地方創生プロジェクト
 

擬似乱数について