For Gauche 0.9.5


Next: , Previous: , Up: ライブラリモジュール - ユーティリティ   [Contents][Index]

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

Module: math.mt-random

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

乱数発生器の通常の用途には、srfi-27を使うことをお勧めします。 srfi-27はこのモジュールの上に実装されていますが、ポータブルなAPIを提供しています。 srfi-27にない機能が必要な時のみこのモジュールを直接使うようにしてください。

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 (単一型のベクタ参照)が使えます。 整数の場合は、初期化のために低位の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(含まれない)の間の不正確実数で埋められます。


Next: , Previous: , Up: ライブラリモジュール - ユーティリティ   [Contents][Index]