[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.13 math.mt-random - Mersenne Twister乱数発生器

Module: math.mt-random

Makoto MatsumotoとTakuji Nishimuraにより開発された、 “Mersenne Twister”アルゴリズムに基づく、 仮想的な乱数発生器(RNG)を提供します。 高速で、2^19937-1という極めて長大な周期を持ちます。 アルゴリズムの詳細については、MTを参照して下さい。

Class: <mersenne-twister>

Mersenne Twister RNGの状態をカプセル化するクラスです。 このクラスのそれぞれのインスタンスは独自の状態を持ち、 個別のシードで初期化されていれば、それぞれがランダムビットの 独立したソースになり得ます。

ランダムシードの値は初期化引数:seedにより初期化時に与えるか、 以下で説明するmt-random-set-seed!を使います。

 
(define m (make <mersenne-twister> :seed (sys-time)))

(mt-random-real m) ⇒ 0.10284287848537865
(mt-random-real m) ⇒ 0.463227748348805
(mt-random-real m) ⇒ 0.8628500643709712
…
Function: mt-random-set-seed! mt seed

Mersenne Twister RNG mtにランダムシードの値seedをセットします。 seedは任意の正の正確整数か、任意長のu32vector (srfi-4 - 単一型のベクタ参照)が使えます。 整数の場合は、初期化のために低位の32ビットが使われます。 u32vectorの場合は、初期化のために624までの要素が使われます。

Function: mt-random-get-state mt
Function: mt-random-set-state! mt state

Mersenne Twister RNG mtを取り出して再インストールします。 状態は、625要素のu32vectorで表現されます。 状態はどこにでも保存することができ、仮想的なランダムシーケンスの 生成を続行するために、<mersenne-twister>のインスタンスとして リストアできます。

Function: mt-random-real mt
Function: mt-random-real0 mt

0.0と1.0の間のランダムな実数を返します。 1.0は範囲に含まれません。 mt-random-realは、0.0も範囲に含みませんが、 mt-random-real0は含みます。 0.0を含まないのは、SRFI-27ドラフトに依拠しています。

Function: mt-random-integer mt range

0からrange-1までの正の正確整数をランダムに返します。 rangeはいかなる正の正確整数でも構いません。

Function: mt-random-fill-u32vector! mt u32vector
Function: mt-random-fill-f32vector! mt f32vector
Function: mt-random-fill-f64vector! mt f64vector

与えられたユニフォームベクタをランダムな数値で埋めます。 mt-random-fill-u32vector!では、要素は0と2^32-1の間の 正の正確整数で埋められます。 mt-random-fill-f32vector!mt-random-fill-f64vector! では、0.0と1.0(含まれない)の間の不正確実数で埋められます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.