Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Randomクラス

class Random

クラスの継承リスト: Random < Object < Kernel < BasicObject

要約

MT19937に基づく疑似乱数生成器を提供するクラスです。

参考

オリジナル版 http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html

特異メソッド

new(seed = Random.new_seed) -> Random

メルセンヌ・ツイスタに基づく疑似乱数発生装置オブジェクトを作ります。 引数が省略された場合は、Random.new_seedの値を使用します。

[PARAM] seed:
疑似乱数生成器の種を整数で指定します。

動作例: 種が同じなら同じ乱数列を発生することができる。

prng = Random.new(1234)
[ prng.rand, prng.rand ]   #=> [0.191519450378892, 0.622108771039832]
[ prng.integer(10), prng.integer(1000) ]  #=> [4, 664]
prng = Random.new(1234)
[ prng.rand, prng.rand ]   #=> [0.191519450378892, 0.622108771039832]
new_seed -> Integer

適切な乱数の種を返します。

使用例:

p Random.new_seed # => 184271600931914695177248627591520900872
rand(max=0) -> Float

疑似乱数を発生させます。

引数が省略された時、もしくは整数の"0"、または nilが指定された場合は0以上1未満の実数を返します。 負の引数が指定された場合は、maxを正の整数に変換し、0以上変換後の整数未満の整数を返します。

[PARAM] max:
疑似乱数生成器の最大値を指定します。
[RETURN]
max を超えない乱数を返します。

使用例:

srand 1234 # 乱数の種を設定する。
p [ Random.rand,  Random.rand ]            #=> [0.191519450163469, 0.49766366626136]
p Random.rand(1000)  # => 204

0.upto(10){
  # 3 を超えない整数を返します。
  p Random.rand(-3.14)
}
srand(number=0) -> Integer

疑似乱数生成器の種を設定します。

number が0もしくは省略された場合は、 プロセスID、現在時間等を組み合わせた適切な値が種として使用されます。

[PARAM] number:
疑似乱数発生器の種を整数で指定します。
[RETURN]
設定される前の種を返します。

動作例:

p Random.srand 1
p Random.srand 1234   # => 1
p [ Random.rand,  Random.rand ]            #=> [0.191519450163469, 0.49766366626136]

インスタンスメソッド

self == other -> bool

乱数生成器が等しい状態であるならばtrue を返します。

[PARAM] other:
比較対象の乱数生成器

動作例:

r1 = Random.new(1)
r2 = Random.new(1)

p r1 == r2 # => true
r2.rand
p r1 == r2 # => false
r1.rand
p r1 == r2 # => true
bytes(size) -> String

ランダムなバイナリー文字列を返します。結果の文字列のサイズを指定できます。

[PARAM] size:
結果の文字列のサイズを指定します。

動作例:

r2 = Random.new(1)
p r2.bytes(10) # => "%\xF4\xC1j\xEB\x80G\xFF\x8C/"
marshal_dump -> Array

Random#marshal_load で復元可能な配列を返します。

動作例:

r1 = Random.new(1)
a1 = r1.marshal_dump
r2 = Random.new(3)
p r1 == r2 # => false
r3 = r2.marshal_load(a1)

p r1 == r2 # => true
p r1 == r3 # => true
marshal_load(array) -> Random

Random#marshal_dump で得られた配列を基に、Randomオブジェクトを復元します。

[PARAM] array:
三要素以下からなる配列を指定します。 何を指定するかはRandom#marshal_dumpを参考にしてください。
[EXCEPTION] ArgumentError:
array が3より大きい場合に発生します。

動作例:

r1 = Random.new(1)
a1 = r1.marshal_dump
r2 = Random.new(3)
r3 = r2.marshal_load(a1)

p r1 == r2 # => true
p r1 == r3 # => true

[SEE_ALSO] Random#marshal_dump

rand -> Float

浮動小数点数を返します。

動作例:

p Random.new(3).rand # => 0.5507979025745755
rand(arg) -> Integer

arg が IntegerもしくはBignumの場合は、arg 未満の整数を返します。 Rangeオブジェクトの場合はrange.member?(number) == trueになるような数値を返します。

[PARAM] arg:
整数もしくはRangeオブジェクトを指定します。

動作例:

prng = Random.new(1234)

#[5, 6, 7, 8, 9]のどれか

p prng.rand(5..9)  # => 8

#[5, 6, 7, 8]のどれか

p prng.rand(5...9) # => 7

#5.0 からの9.0 の間の数値9.0, 9.0を含む。

p prng.rand(5.0..9.0)  # => 8.271353771386416

#5.0 からの9.0 の間の数値9.0, 9.0を含まない。

p prng.rand(5.0...9.0) # => 7.448447578709083
[EXCEPTION] ArgumentError:
引数の数が0または1では無い時、引数に負の数値を与えた時に発生する。
seed -> Integer

現在の乱数の種を返します。

動作例:

p Random.new(3).seed # => 3

private特異メソッド

left -> Integer

C言語レベルで定義されている構造体MTの静的変数default_randの変数leftを参照します。詳しくはrandom.c を参照してください。

state -> Integer

C言語レベルで定義されている構造体MTの静的変数default_randの状態を参照します。詳しくはrandom.c を参照してください。

privateメソッド

left -> Integer

C言語レベルで定義されている構造体MTの変数leftを参照します。詳しくはrandom.c を参照してください。

state -> Integer

C言語レベルで定義されている構造体MTの状態を参照します。詳しくはrandom.c を参照してください。

class Random