JIS Z 9031:2012 乱数生成及びランダム化の手順 | ページ 2

2
Z 9031 : 2012
注記 この規格の対応国際規格及びその対応の程度を表す記号を,次に示す。
ISO 28640:2010,Random variate generation methods(MOD)
なお,対応の程度を表す記号“MOD”は,ISO/IEC Guide 21-1に基づき,“修正している”
ことを示す。

2 引用規格

  次に掲げる規格は,この規格に引用されることによって,この規格の規定の一部を構成する。これらの
引用規格は,その最新版(追補を含む。)を適用する。
JIS X 0001 情報処理用語−基本用語
注記 対応国際規格 : ISO/IEC 2382-1:1993,Information technology−Vocabulary−Part 1: Fundamental
terms(MOD)
JIS Z 8101-1 統計−用語と記号−第1部 : 確率及び一般統計用語
注記 対応国際規格 : ISO 3534-1:2006,Statistics−Vocabulary and symbols−Part 1: General statistical
terms and terms used in probability(IDT)
JIS Z 8101-2 統計−用語と記号−第2部 : 統計的品質管理用語
注記 対応国際規格 : ISO 3534-2:2006,Statistics−Vocabulary and symbols−Part 2: Applied statistics
(IDT)
JIS Z 8101-3 統計−用語と記号−第3部 : 実験計画法
JIS Z 8201 数学記号

3 用語及び定義

  この規格で用いる主な用語及び定義は,JIS X 0001,JIS Z 8101-1,JIS Z 8101-2及びJIS Z 8101-3によ
るほか,次による。
3.1
乱数(random variate, random number)
特定の確率変数の実現値とみなし得る数。
注記1 “乱数”は,一様分布に従う乱数を意味することが多い。
注記2 数列として与えられた乱数は,乱数列と呼ばれる。
3.2
疑似乱数(pseudorandom number)
アルゴリズムによって生成し,ランダムとみなし得る乱数(3.1)。
注記 誤解がない場合,疑似乱数を単に乱数と呼んでもよい。
3.3
物理乱数(physical random number)
物理的なメカニズムによって生成した乱数(3.1)。
3.4
二値乱数列(binary random number sequence)
0及び1からなる乱数(3.1)の列。
3.5
シード(seed)

――――― [JIS Z 9031 pdf 6] ―――――

                                                                                              3
Z 9031 : 2012
疑似乱数の生成に必要な初期値。
3.6
ランダム化(randomization)
データの採取方法に乱数を用いるプロセスを設ける操作。
3.7
ランダム割付け(random assignment)
実験単位に処置を割り付けるプロセスをランダム化する操作。

4 記号及び数学的演算

4.1 記号

  この規格で用いる主な記号は,JIS X 0001,JIS Z 8101-1,JIS Z 8101-2及びJIS Z 8201によるほか,次
による。
X 整数形の一様乱数
U 標準一様乱数
Z 正規乱数
n 乱数列の添え字

4.2 数学的演算

  この規格で用いる数学的演算を次に示す。
m (mod k) 整数mを整数kで除した剰余
注記1 この規格の対応国際規格では,整数mを整数kで除した剰余の記号[m (mod k)]にmod (m; k)
を用いている。
m k 二進整数m及びkのビットごとの排他的論理和
例1 1 1=0
0 1=1
1 0=1
0 0=0
1010 1100 = 0110
m&k 二進整数m及びkのビットごとの論理積
例2 1 & 1 = 1
0&1=0
1&0=0
0&0=0
1010 & 1100 = 1000
注記2 この規格の対応国際規格では,論理積の記号(m & k)にm kを用いているが,プログラム
言語によっては排他的論理和の記号として使用されているため,論理積の一般的な記号とし
てm kは用いない方がよい。
m←k kの値をmに代入
m >> k 二進整数mのkビット右シフト
m << k 二進整数mのkビット左シフト
注記3 この規格の対応国際規格では,kの値をmに代入の記号(m←k )にm:= kを用いている。

――――― [JIS Z 9031 pdf 7] ―――――

4
Z 9031 : 2012
R 実数Rの整数部分([R]とも表す。)
R 実数Rを下まわらない最小の整数
gcd (a, b) 自然数aとbとの最大公約数

5 乱数

5.1 一般

  この箇条では,疑似一様乱数を生成する幾つかのアルゴリズムについて規定する。
注記1 A.1では乱数表を,A.2では乱数生成に利用した物理乱数を参考として記載している。A.3で
は乱数表の使い方を記載している。
注記2 附属書Bは,ここで述べられた各アルゴリズムのC言語及びBASIC言語による実装コード
例を参考として記載したものである。参考のため,無理数回転法についてはB.6で記載して
いる。
注記3 これらのアルゴリズムの実装コード,及び物理乱数による乱数表が参考文献[23]のホームペ
ージから入手可能である。
注記4 線形合同法は,高精度モンテカルロシミュレーションには用いないほうがよいが,他の疑似
乱数生成法のためのシードの供給,その他の高精度を要しない簡便なモンテカルロシミュレ
ーション等には用いることができる。

5.2 疑似一様乱数

  アルゴリズムによって乱数を生成しようとする試みは,コンピュータの発明とほとんど同時に始まり,
以来極めて多数のアルゴリズムが提案されてきた。この規格では,それらのうちから,線形合同法及びM
系列法の二つの類型を選んで規定する。
多数のアルゴリズムが提案されているということは,裏返せば,どれも完全ではないということである。
これは,決定論的なアルゴリズムによってランダムな系列を作り出そうという根本的な矛盾を考えれば明
らかである。各アルゴリズムの長所及び短所はある程度分かっているが,全ての性質が解明されているわ
けではなく,思いがけない欠点がひそんでいる可能性は否定できない。したがって,可能ならば,異なる
類型から複数のアルゴリズムを選んで使用することが望ましい。
この規格で記載する二つの類型の特徴の詳細は,それぞれのアルゴリズムの規定のところで示すが,概
略は,次のとおりである。
a) 線形合同法 現在,多くのコンピュータシステム及びソフトウェアで使用されている。使用メモリが
少なく,高速であるが,周期が短く,あまりランダムでなく,特に高次元のランダム点列を生成する
のには向かないという欠点がある。
b) 系列法 幾つかの変種があるが,いずれもかなり高速であり,周期は実用的観点からすれば無限と
もいえるほど長くできる。使用メモリは,線形合同法と比べると,はるかに多いが,現在のコンピュ
ータでは問題とすべきものではない。高次元のランダム点列の生成にも向いている。
いずれの方法でも,乱数を生成する前にシードを与える必要がある。同じ生成法に同一のシードを与え
ると,同一の疑似乱数列を生成することができるので再実験などの場合に便利である。逆に,同じ生成法
によって異なる疑似乱数列を生成したい場合には,シードを変える必要がある。

――――― [JIS Z 9031 pdf 8] ―――――

                                                                                              5
Z 9031 : 2012

5.3 線形合同法

5.3.1  定義
次の漸化式を使ってシードX0から数列X1,X2,···を作り出す方法を線形合同法という。
Xn aXn 1 c (mod m) (n ,1 ,2 )
ここで,乗数a及び法mは正の整数であり,加数cは非負の整数である。パラメータa,m,及びcの
値を定めると,一つの線形合同法が確定し,更にシードX0を与えると,作り出される数列が確定する。
注記 漸化式の意味は,次のとおりである。シードX0を使ってaX0+cを計算し,それをmで除した
余りをX1とする。次に,aX1+Cを計算し,それをmで除した余りをX2とする。以下,同様の
操作を繰り返す。
5.3.2 パラメータの値の定め方
a,m及びcの値を勝手に定めたのでは良い疑似乱数列が得られないことが多いので,次のような基準に
従って定めることが望ましい。
法mは,得られる数列の周期の上界となるので,できるだけ大きくするのがよい。1語が32ビットから
なる計算機を使用する場合には,m=232又はm=231−1とすることが望ましい。
乗数aとしては,スペクトル検定で良好な成績を修めたものを使うことが望ましい。
加数cの選び方については,特に厳しい基準はない。ただし,これを0とするか,又は正の整数とする
かによって,生成される数列の周期が異なる場合がある。
注記1 上記の方法でX1,X2,···を計算していくと,いつかはXn=X0となる。このnのことを,この
数列の周期という。n≦mである。
注記2 スペクトル検定は,線形合同法によって生成される数列の1周期全部にわたる性質を調べる
理論的検定であり,その内容は,附属書JAに記載する。
注記3 mが2の整数べき(冪)乗の場合,c=0とすると,周期はm/2以下である。cを奇数,aを4
で除して1余る数,周期はmとなる。
5.3.3 使用するパラメータの例
1語が32ビットの計算機を使用する場合,色々な文献から選んだ表1のパラメータを使用するのがよい。
ただし,2行目及び3行目のパラメータに対してはシードX0は奇数に選ぶ。

――――― [JIS Z 9031 pdf 9] ―――――

6
Z 9031 : 2012
表1−線形合同法で使用するパラメータの例
行番号 a c m 周期
1 1 664 525 * 232 16.1 10.6 8.0 6.0 5.0 232
2 1 566 083 941 0 232 14.8 9.7 7.5 5.6 4.2 230
3 48 828 125 0 232 14.8 8.8 7.4 5.7 4.9 230
4 2 100 005 341 0 231−1 15.4 10.2 7.7 6.0 5.0 231−2
5 397 204 094 0 231−1 14.8 9.7 7.4 6.0 5.0 231−2
6 314 159 369 0 231−1 15.2 9.9 7.6 5.9 5.1 231−2
注記1 cの列の*印は,任意の奇数を使用してもよいことを表す。
注記2 ···, の数値は,スペクトル検定(附属書JA参照)の結果に基づくものである。
生成される数列の連続するk個の要素を使ってk次元(2≦k≦6)の点列を生成する場合,
上位 ットの精度で見れば,ほぼ一様分布をしているものと考えてよい。それ以上の精度
は保証されない。また,Xn−k+1,Xn−k+2,···,Xn−1の値が与えられたときのXnの条件付き分
布が,上位 ットの精度でほぼ一様分布となると見ることもできる。したがって,これら
の数値が大きいパラメータを使うことが望ましい。
注記3 1行目のパラメータを使うと,0から232−1までの全ての整数が生成される。2行目,3行
目のパラメータを使うと,生成される数の集合は [{4i+1|i=0,1,···,230−1}] 又は [{4i+
3|i=0,1,···,230−1}] である。実際に生成される場合は,シードX0の属する集合である。
4,5,6行目のパラメータを使うと,1から231−2までの全ての正整数が生成される。
注記4 ビット数の少ない乱数列を作りたい場合には,上位ビットを取り出して使うことが望まし
く,下位ビットを取り出して使うことは望ましくない。

5.4 M系列法

5.4.1  定義
pを自然数,c1,c2,···,cp−1を0又は1として,漸化式
xn p cp 2xn p 2
cp 1xn p 1 c1xn 1 xn (mod ()2n ,1 ,3,2)
によって生成される0,1の系列x1,x2,···を考える。
xn+N=xnが全てのnについて成り立つ最小の正の整数Nを,この系列の周期という。周期が2p−1であ
るとき,この系列のことをM系列という。
多項式
p p1
t cp 1t c1t 1
のことを上記の漸化式の特性多項式という。
注記1 上記の漸化式からM系列が得られるための条件は,シードx1,x2,···,xpのうちの少なくと
も一つは0でなく,かつ,特性多項式が原始多項式という条件を満たすことである。表2及
び表3は,それぞれ3項,5項の原始多項式の係数を幾つか示したものである。
なお,特性多項式が3項又は5項というのは,特性多項式の0でない項の個数を表してい
る。例えば,表2でp=89,q=38の場合は,特性多項式はt89+t38+1となり,3項である。
注記2 “M系列”という名称のうちの文字Mは,最大を意味する英語のMaximumに由来する。上
記の漸化式によって生成されるいかなる系列の周期も2p−1を超えることはできない。した
がって,周期が2p−1の系列があれば,それは周期が最大の系列である。
注記3 この方法を用いる場合には,上記の漸化式の特性多項式の係数としては,表3の値か,又は
原始多項式であることが文献によって証明されている多項式を使う。
M系列は1ビットからなる系列であるので,これを基にして,もっと桁数の長い疑似乱数列を作る必要

――――― [JIS Z 9031 pdf 10] ―――――

次のページ PDF 11

JIS Z 9031:2012の引用国際規格 ISO 一覧

  • ISO 28640:2010(MOD)

JIS Z 9031:2012の国際規格 ICS 分類一覧

JIS Z 9031:2012の関連規格と引用規格一覧