目次

疑似乱数

乱数
でたらめに並んだ数字の列
  • サイコロを振る
    • 正20面体サイコロ
  • 物理現象を利用する
    • 放射線、電流のノイズ
  • 国勢調査などの中から数字を抜き出す
疑似乱数
ある規則に従って「乱数のようなもの」を作る
計算機などを用いて生成した
でたらめに近い数字の列
  • 再現性
  • 周期性

(一様)疑似乱数

線形合同法

線形合同法

$$X_n= (aX_{n-1}+c) \pmod M$$

乗算合同法

$$X_n= (aX_{n-1}) \pmod M$$

$M$$0<M$
$a$乗数$0<a<M$
$c$増分$0<c<M$
$X_0$初期値$M0<X_0<M$

線形合同法の例

$$ \begin{matrix} & & 1\\ 1*11 \pmod {32} & &= 11\\ 11*11 \pmod {32} &= 121 \pmod {32} &= 25\\ 25*11 \pmod {32} &= 275 \pmod {32} &= 19\\ 19*11 \pmod {32} &= 209 \pmod {32} &= 17\\ 17*11 \pmod {32} &= 187 \pmod {32} &= 27\\ 27*11 \pmod {32} &= 297 \pmod {32} &= 9\\ 9*11 \pmod {32} &= 99 \pmod {32} &= 3\\ 3*11 \pmod {32} &= 33 \pmod {32} &= 1 \end{matrix} $$

線形合同法の特徴

実数の一様乱数

例)$c = 0$, $a = 177$, $M = 2^15$, $X_0 = 1$

$n$ $x_n$ $u_n$
0 1 0.00003051758
1 177 0.00540161133
2 31329 0.95608520508
3 7441 0.22708129883
4 6337 0.19338989258

線形合同法の実装系

$2^{31}$個発生させ、2個ずつペアにして$x$-$y$座標としてプロット
rand() drand48()
$M=2^{31}$ $M=2^{48}$
周期:$2^{31}$ 周期:$2^{48}$

Lagged Fibonacci法

$$X_n=f(X_{n-r}, X_{n-s}) \pmod M$$

$r$, $s$, $M$: 整数($r>s$)

Lagged Fibonacci法の実装系

$r=31$, $s=28$, $M=2{31}$
周期:$\sim 2^{62}$

M系列法(線形最大周期列法)

$$R_n=R_{n-p}\oplus R_{n-q}$$

$p$ $q$
89 38
127 1, 7, 15, 30, 63
250 103
521 32, 48, 158, 168
607 105, 147, 273

Mersenne-Twister法

分布をもった乱数

一様分布 指数分布 正規分布

指数分布

逆関数法

正規分布

極座標法(Box-Muller 法)

中心極限定理