LinearCongruentialEngine


擬似乱数

0が多すぎるという不満がありますが、実際にカウントしたら33%ずつになったことについては、平等を参照してください。ホームチームの勝ちは、負けより多いこと、引分けは、少ないことについては、0の個数を参照してください。100円BIGとは別の観点からこのウェブページでは、ランダムの専門的な論点を示します。

ランダム
でたらめである。乱雑である。再現できない。予測できない。
乱数
乱数表に記載されています。
乱数表
乱数表としては、日本工業規格(JIS)Z9031:2001の付表があります。ランダムになるように、乱数表を作成しなければなりません。コンピューターではなく物理的な方法を利用すれば、ランダムであることを確信できます。

*1 *2

擬似乱数

乱数らしいが、実際は再現および予測が可能である場合、擬似乱数です。コンピューターが発生するにせものを真の乱数と区別するために、擬似乱数という用語が使用されます。

暗号ではない

擬似乱数は、再現が可能であるため、暗号として利用するのに適していません。

暗号
第三者に通信内容を知られないように、通信文を見ても読めないように変換する表記法

*3

メルセンヌ・ツイスタ

メルセンヌ・ツイスタは、MTと呼ばれています。Python, Ruby, R, PHP, MATLAB, C++11などのプログラミング言語は、擬似乱数発生器としてMTを内蔵しています。プログラミング言語としてDもMTを用意しています。

MersenneTwisterEngine を、オリジナルの実装 MT19937 と同じパラメタでインスタンス化したもの。 一様分布した32bitの数値を、2の19937乗の周期で生成します。メモリが著しく制限されている場合でない限り (その場合は LinearCongruentialEngine を選択すべきでしょう)、お勧めの乱数生成エンジンです。 *4

周期

擬似乱数は、周期的に同じ数列になります。実用的な擬似乱数は、周期が長い。

初期化

擬似乱数発生器(pseudorandom number generator)の初期化をおこなう必要があります。シードを設定する方法は、課題です。同じシードを設定すれば、同じ数列になります。

疑似乱数生成器 (PRNG) は、乱数に近い性質の数列を生成できる決定性アルゴリズムである。各数列は、PRNG の初期状態と状態を変化させるアルゴリズムによって決定される。大半の PRNG は初期状態 (シード状態 とも呼ばれる) を設定可能である。初期状態を設定することを「PRNG にシードを設定する」と表現する。

明示的にシードを設定しない、あるいは同じシード値を設定するなど、同一の初期状態で PRNG を呼び出している場合には、プログラムを実行し直しても同一の数列が生成される。 *5


均等分布

32ビット版のメルセンヌ・ツイスタを複数回呼び出して64ビット、128ビットなどの疑似乱数として利用しても統計的に安全であるといわれています。 *6

高速

物理的な方法と異なり、コンピューターは、高速に多数の乱数を発生します。物理的に乱数を発生するマイクロチップが開発されています。 *7 *8

最新の20件

2017-10-02 2017-07-11 2017-03-18 2016-08-18 2016-07-26 2016-07-25 2016-06-14 2016-06-09 2016-05-12 2016-05-11 2016-05-06 2016-05-05 2016-05-01 2016-04-30 2016-04-29 2016-04-25

今日の1件

  • LinearCongruentialEngine(1)

  • counter: 110
  • today: 1
  • yesterday: 0
  • online: 1


*1 PDF: (別紙3)乱数表(出典:日本工業規格(JIS)Z9031:2001 の付表)http://www.mhlw.go.jp/shingi/2009/12/dl/s1211-17c10.pdf
*2 PDF: (別紙2)乱数表(出典:日本工業規格(JIS)Z9031:2001 の付表)http://www.mhlw.go.jp/shingi/2009/07/dl/s0715-14j.pdf
*3 暗号|Wikipedia https://ja.wikipedia.org/wiki/%E6%9A%97%E5%8F%B7
*4 std.random - プログラミング言語 D 2.0 http://www.kmonos.net/alang/d/phobos/std_random.html
*5 乱数生成器には適切なシード値を与える|CERT C コーディングスタンダード https://www.jpcert.or.jp/sc-rules/c-msc32-c.html
*6 メルセンヌ・ツイスタ|Wikipedia https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%AB%E3%82%BB%E3%83%B3%E3%83%8C%E3%83%BB%E3%83%84%E3%82%A4%E3%82%B9%E3%82%BF
*7 量子物理型・真性乱数発生器ボード AR-QUANTIS http://www.argocorp.com/compo/IDQ/IDQ_OEM.html
*8 PDF: 乱数品質を保証したオンチップハードウェア乱数発生器 http://www.soumu.go.jp/main_content/000256422.pdf