Unofficial
"CLDC 1.0
+ MIDP 1.0"
API Reference.
(日本語版)

java.util
クラス Random

java.lang.Object
  上位を拡張 java.util.Random

public class Random
extends Object

48 ビットのシードと線形合同擬似乱数アルゴリズムを使用して擬似乱数を生成します。 この擬似乱数の生成についての詳細は Donald Knuth 著“The Art of Computer Programming, Volume 2”の 3.2.1 に記載されています。

同じ値をシードとして生成されたインスタンスに対して、それぞれ同じメソッドを同じ順序で呼び出して乱数を取得した場合、それぞれのインスタンスはまったく同じ値を返します。 この法則を保証するため、固有のアルゴリズムを Random クラスは実装しています。 Java コードの絶対的な移植性を確保するため、全ての実装(実装)は、この Random クラスの実装に際して同様のアルゴリズムを採用しなければなりません。

アプリケーションにおいて Random クラスのサブクラスを作成する場合、next(int) メソッドをオーバーライドして独自のアルゴリズムを実装することもできます。


コンストラクタの概要
Random()
          現在の日時をシードに持つオブジェクトを構築します。
Random(long seed)
          渡されたシードを持つオブジェクトを構築します。
 
メソッドの概要
protected  int next(int bitlen)
          指定されたビット長の擬似乱数を生成します。
 int nextInt()
          next(int) メソッドを呼び出して、int 型の擬似乱数を返します。
 long nextLong()
          next(int) メソッドを呼び出して、long 型の擬似乱数を返します。
 void setSeed(long seed)
          渡された long 型の値をシードとして設定します。
 
クラス java.lang.Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

Random

public Random()
現在の日時をシードに持つオブジェクトを構築します。


Random

public Random(long seed)
渡されたシードを持つオブジェクトを構築します。

パラメータ:
seed - 設定するシード値を渡します。
関連項目:
setSeed(long)
メソッドの詳細

setSeed

public void setSeed(long seed)

渡された long 型の値をシードとして設定します。 このメソッドの一般規約ではパラメータ seed を使用してシードを作成した状態となるように、保持しているシードを変更します。 実際の Random クラスでの実装は、

 public synchronized void setSeed(long seed)
 {
     this.seed = (seed ^ 0x5deece66dl) & 0xffffffffffffl;
 }

とされています。このように使用するビット数は48ビットに制限しています。

サブクラスを作成し、このメソッドをオーバーライドすることによってシード値として渡された64ビット全ての有効とするように変更することも可能です。

パラメータ:
seed - 設定するシード値を渡します。

next

protected int next(int bitlen)

指定されたビット長の擬似乱数を生成します。 このメソッドは他の乱数生成メソッドから内部的に呼び出されます。 標準で実装されている以外のアルゴリズムで乱数を生成する場合は、サブクラスでこのメソッドをオーバーライドします。

このメソッドの一般規約では1〜32(これには1と32を含む)ビットの間の擬似乱数を生成し、int 型で返します。 結果として生成される個々のビットは必要十分に均等に近く0あるいは1が選択されます。

実際の Random クラスでの実装は、

 protected synchronized int next(int bitlen)
 {
     seed = (seed * 0x5deece66dl + 0x0bl) & & 0xffffffffffffl;
     return (int) (seed >>> (48 - bitlen);
 }

とされています。

これは D.H.Lehmer によって定義された、線形合同擬似乱数アルゴリズムを使用したものです。 アルゴリズムの詳細については Donald Knuth 著“The Art of Computer Programming, Volume 2: Seminumerical Algorithms”の 3.2.1 に記載されています。


nextInt

public int nextInt()

next(int) メソッドを呼び出して、int 型の擬似乱数を返します。 生成される値はほぼ均等な確率で int 値の範囲内に分散した値となります。

実際の Random クラスでの実装は、

 public int nextInt()
 {
     return next(32);
 }

とされています。

戻り値:
生成された擬似乱数を返します。

nextLong

public long nextLong()

next(int) メソッドを呼び出して、long 型の擬似乱数を返します。 生成される値はほぼ均等な確率で long 値の範囲内に分散した値となります。

実際の Random クラスでの実装は、

 public long nextLong()
 {
     return ((long) next(32) << 32) + next(32);
 }

とされています。

戻り値:
生成された擬似乱数を返します。

Unofficial
"CLDC 1.0
+ MIDP 1.0"
API Reference.
(日本語版)

このAPIリファレンスに記載されている内容は"さかきけい"が Sun Microsystems, Inc や Java Community Process が公開している各種公式資料を元に、独自に調査・編集したものであり、Sun Microsystems, Inc や Java Community Process 等とは一切関係ありません。したがってこのAPIリファレンスに関する問い合わせを関係各社等に対して行うことを固く禁じます。
また、記載された内容には既知か否かに関らず誤りが含まれる可能性があり、一切保証はありません。本APIリファレンスを使用した結果、不利益が生じたとしても"さかきけい"は一切の責任を負いません。
許可無く公開/非公開および Internet/Intranet/LAN を問わず他サイトに転載すること、複写および複製すること、ローカルファイル等に保存することを禁じます。


Copyright© 2001-2002,2005-2009 by KEI SAKAKI.
ALL RIGHTS RESERVED.
無断転載を禁じます。

Unofficial "CLDC 1.1 + MIDP 2.0" API Reference はこちらです。