diff --git "a/\346\225\260\345\200\244/\344\271\261\346\225\260\343\202\222\345\276\227\343\202\213.md" "b/\346\225\260\345\200\244/\344\271\261\346\225\260\343\202\222\345\276\227\343\202\213.md" index dd3e86a..36756fa 100644 --- "a/\346\225\260\345\200\244/\344\271\261\346\225\260\343\202\222\345\276\227\343\202\213.md" +++ "b/\346\225\260\345\200\244/\344\271\261\346\225\260\343\202\222\345\276\227\343\202\213.md" @@ -1,2 +1,58 @@ 乱数を得る ========== + +はじめに +-------- + +プログラミングにおける乱数は大きく、つぎのふたつにわけられる。 + +* 擬似乱数 +* 暗号論的擬似乱数 + +それぞれのプログラムの持つ目的によって、きちんと使いわける必要がある。 + +擬似乱数 +-------- + +### 特徴、用途 + +生成される乱数列を十分に長く観察することで、 +続く値を予測することが可能である場合がある。 +ゲーム、シミュレーション、乱択アルゴリズムなどに使われる。 + +### random + +#### 特徴 + +Haskell 98標準に準拠したライブラリ。 +つぎのような特徴がある。 + +* 周期が短い +* 生成が遅い + +このような問題があるため、Haskell 2010では、標準としては含まれていない。 +パッケージrandomとして使うことができる。 + +#### 使用法 + +### mwc-random + +#### 特徴 + +MWC256というアルゴリズムを使ったライブラリ。 +つぎのような特徴がある。 + +* 周期が長い +* 生成が速い + +#### 使用法 + +暗号論的擬似乱数 +---------------- + +### 特徴、用途 + +それまでに生成してきた乱数列から、つぎの値を予測することが困難である。 +暗号技術において、実質的に予測不可能な値を生成するために使われる。 + +### cryptonite