コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
Wikippe
検索
検索
表示
ログイン
個人用ツール
ログイン
乱数列のソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
乱数列
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
要求した操作を行うことは許可されていません。
このページのソースの閲覧やコピーができます。
'''乱数列'''(らんすうれつ)とは[[ランダム]]な数列のこと。 [[数学]]的に述べれば、今得られている数列 ''x''<sub>1</sub>, ''x''<sub>2</sub>, ..., ''x''<sub>''n''</sub> から次の数列の値 ''x''<sub>''n''+1</sub> が予測できない数列。乱数列の各要素を乱数という。 == 概要 == 乱数は、実験計画や[[シミュレーション]]で利用されるほか、[[秘密鍵]]の生成など[[暗号]]でも利用される。 == 擬似乱数と真の乱数 == [[有限オートマトン]]である[[コンピュータ]]では、基本的には確定的な計算によってしか数列を作ることができない。しかし、確定的な計算によって作られた数列でありながら、統計的には[[サイコロ]]などで作られた乱数列と同様の性質を持つ数列の生成法があり、そのようにして生成された数(列)を[[擬似乱数]](列)と言う。また、擬似乱数に対して、サイコロなどで作られた乱数を真の乱数と言うことがある。 == 乱数の種類 == 乱数はそのとる値や分布によって分類される。 === 2進乱数 === 2進乱数とは[[0]]と[[1]] (あるいは[[-1]]と1)がランダムに現れるような乱数である。[[ストリーム暗号]]や[[スペクトラム拡散]][[通信]]に用いられる。<!--コンピュータでは、複数ビットの乱数を生成するような関数から1ビット単位で切り出して生成する。--><!-- ← M系列とかは本質的にビット列ですのでこの説明は変 MetaNest --> <!-- === 自然乱数 === 自然乱数とは[[自然数]]がランダムに現れるような乱数である。0を含むことが多い。0以上無限大までの全ての自然数を用いた自然乱数が考えられるが、実際上は最大の自然数を決めて、それ以下の範囲で考えることが多い。 --><!-- ← この節はあれこれ変。検索する限り、この記事の引用以外は、自然乱数=真の乱数ないし物理乱数の別名じゃないかという感じだが MetaNest --> === 一様乱数 === 一様乱数とはある有限の区間を区切って、その区間内で全ての実数が同じ確率([[基数#可算・連続体|濃度]])で現れるような乱数のことである。つまり[[連続一様分布]]に従う。 コンピュータではある最大値までの範囲内の整数値を取る乱数列を発生させて、それを最大値で割ることで[0,1](0以上1以下)の一様乱数が得られる。また、(最大値+1)で割ることで[0,1)(0以上1未満)の一様乱数が得られる。このようにして生成した一様乱数は原理的に[[有理数]]のみで[[無理数]]は含まれないため、これは真の一様乱数ではない。デジタルコンピュータの性質上、[[無理数]]を扱うことはできない。 [a,b](a以上b以下)の区間の一様乱数が必要な場合は、[0,1]の乱数列を用意して、これに(b-a)をかけて、さらにaを加えることで得られる。 [a,b)(a以上b未満)が必要な場合は同様にして[0,1)を利用する。 ==== 整数の一様分布乱数 ==== コンピュータでは基本的な乱数として<ref>[[#algo|奥村(1991)]]、P295。</ref>、0からある最大値までの整数に一様分布する乱数を発生させる関数(rand()や[[メルセンヌ・ツイスタ]]など)が用意されている。これを加工することで色々な分布の乱数を作り出すことができる。 === 正規乱数 === 正規乱数とは[[正規分布]]を持つような乱数である。正規乱数は工学においては[[ホワイトノイズ|ホワイトガウスノイズ]]として利用される。 平均μ、分散σ<sup>2</sup> の正規分布''N''(μ, σ<sup>2</sup>)のような正規乱数を作る場合、まず(0,1]の一様乱数を'''[[ボックス=ミュラー法|ボックス=ミューラー法]]'''(Box-Muller transform)で変換して''N''(0, 1)の正規乱数を得ることから始める。 一様乱数(0,1]の要素<math>\alpha</math>と<math>\beta</math>を次の変換を用いて変換する。 *<math>\sqrt{-2\cdot\ln \alpha}\cdot\sin (2\pi \beta)</math> *<math>\sqrt{-2\cdot\ln \alpha}\cdot\cos (2\pi \beta)</math> このようにして二つの相関のない''N''(0, 1)の正規乱数が得られる<ref name="正規分布">[[#algo|奥村(1991)]]、P133-134。</ref>。ただし<math>\ln</math>は[[自然対数]]。 この正規乱数にσをかけて、さらにμを加えることで正規分布''N''(μ, σ<sup>2</sup>)の正規乱数が得られる。 またこれとは別に、簡単で擬似的な方法として、12個の一様乱数[0,1]の和から6を減ずる方法もよく用いられる<ref name="正規分布" />。[[中心極限定理]]によって、独立した複数の一様乱数の和の分布は正規分布に近づく。さらに、12個の一様乱数[0,1]の和の分散は1となるため、6を減ずるだけで正規分布に近い確率分布が得られ、計算に都合がよい。 近年の[[パーソナルコンピュータ]]は[[プロセッサ]]の進歩によって三角関数や対数関数の演算が速くなっているため、1つの正規乱数あたり12回もの一様乱数生成を要するこの方法より、1つの正規乱数あたり1回の一様乱数生成で済むボックス=ミューラー法を用いた方が、一般的によく知られた多くの擬似乱数生成器との組み合わせにおいては高速である。 但し、非常に高速な擬似乱数生成器を用いるならば、[[中心極限定理]]を用いた手法はボックス=ミュラー法を用いるよりも十分に高速な正規乱数の生成が可能である。 [[ボードゲーム]]や[[テーブルトークRPG]]などの遊戯において、複数個のサイコロの目の合計を使用している例がよく見られるが、これは中心極限定理による疑似的な正規乱数を生成し、その分布を利用しているといえる。 == 乱数の生成法 == <!-- 真の乱数は定義不明との指摘をうけて削除 真の乱数を生成する[[アルゴリズム]]は存在しないため、 --> [[有限オートマトン]]である[[コンピュータ]]は、外部からの入力がない限り計算によって求める確定的な擬似乱数しか生成できない。 擬似乱数でない乱数をコンピュータで利用するには、外部のエントロピを入力するための専用ハードウェアなどを利用することになる。そのような[[ハードウェア乱数生成器]]を内蔵した[[CPU]]や[[チップセット]]、[[オペレーティングシステム|OS]]によって[[キーボード (コンピュータ)|キーボード]]の打鍵タイミングなどから乱数が生成される擬似デバイスなどが存在する。このような乱数の生成法はコンピュータの歴史より古く、コンピュータが一般的に利用可能となるまでは「乱数賽」(1~10の全ての数字が1/10の確率で現れるよう作られた[[サイコロ]]。3軸に対して対称の10面体は作れないので、正20面体の各面に2回ずつ番号を振ったものが通常使われる)や袋に入れた乱数カードを引き出すハイハット方式で生成していた。 == 脚注 == {{脚注ヘルプ}} {{reflist}} == 参考文献 == *{{cite book | 1=和書 | title=C言語による最新アルゴリズム事典 | publisher=[[技術評論社]] | author=奥村晴彦 | authorlink=奥村晴彦 | year=1991 |isbn=4-87408-414-1|ref=algo}} ==関連記事== *[[ランダム]] *[[カイ二乗検定]] *[[コルモゴロフ複雑性]] *[[擬似乱数]] *[[モンテカルロ法]] *[[逐次モンテカルロ法]] *[[乱択アルゴリズム]] - [[ラスベガス法]] *[[次元の呪い]] *[[マルコフ連鎖]] *[[MCMC]] [[Category:乱数|らんすうれつ]] [[Category:数学に関する記事|らんすうれつ]]
このページで使用されているテンプレート:
テンプレート:Cite book
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:脚注ヘルプ
(
ソースを閲覧
)
乱数列
に戻る。
検索
検索
乱数列のソースを表示
話題を追加