Java中Random概要_動力ノードJava学院の整理

4823 ワード

Javaには二つのRandom関数が存在する。
一、java.lang.Math.Random;
このMath.Random()関数を呼び出して、正の符号を持つdouble値を返すことができます。この値は0.0以上で1.0未満、すなわち、取の範囲は[0.0,1.0]の左閉右開区間で、戻りの値は疑似ランダム選択の数であり、この範囲内で均一に分布します。例は以下の通りです

package IO;
import java.util.Random;
public class TestRandom {
  public static void main(String[] args) {
    //   1
    System.out.println("Math.random()=" + Math.random());//     double    ,   [0.0,1.0)
    int num = (int) (Math.random() * 3); //       (int)Math.random()*3,     0,          
    System.out.println("num=" + num);
    /**
     *      :
     * 
     * Math.random()=0.02909671613289655
     * num=0
     * 
     */
  }
}
二、java.util.Random
次のRandom()の2つの構造方法:
     Random():新しい乱数生成器を作成します。
     Random(long seed):単一のlongシードを使って新しい乱数生成器を作成します。
Randomオブジェクトを構築する時にシードを指定できます。(ここではシードの役割を指定します。続けて見てください。):Random r 1=new Random(20);
あるいは、現在のシステム時間のミリ秒数をシード数とします。Random r 1=new Random()
説明が必要なのは、Randomオブジェクトを作成する時に、任意の適法なシード数を与えられます。シード数はランダムアルゴリズムの起源数だけで、乱数の区間とは関係がありません。下記のJavaコードのように:

Random rand =new Random(25);
int i;
i=rand.nextInt(100);
初期化時25は直接的な役割を果たしていませんでした。100は乱数の上限であり、生成された乱数は0-100の整数であり、100を含まない。
具体的な使い方は以下の例です。

package IO;
import java.util.ArrayList;
import java.util.Random;
public class TestRandom {
  public static void main(String[] args) {
    //   2
    //        Random  ,            。
    Random ran1 = new Random(10);
    System.out.println("     10 Random    [0,10)       : ");
    for (int i = 0; i < 10; i++) {
      System.out.print(ran1.nextInt(10) + " ");
    }
    System.out.println();
    Random ran2 = new Random(10);
    System.out.println("        10 Random    [0,10)       : ");
    for (int i = 0; i < 10; i++) {
      System.out.print(ran2.nextInt(10) + " ");
    }
    /**
     *      :
     * 
     *      10 Random    [0,10)       : 
     * 3 0 3 0 6 6 7 8 1 4 
     *         10 Random    [0,10)       : 
     * 3 0 3 0 6 6 7 8 1 4 
     * 
     */
    //   3
    //             Random                  。
    Random r3 = new Random();
    System.out.println();
    System.out.println("                  Random    [0,10)       ");
    for (int i = 0; i < 10; i++) {
      System.out.print(r3.nextInt(10)+" ");
    }
    /**
     *      :
     * 
     *                   Random    [0,10)       
     * 1 1 0 4 4 2 3 8 8 4
     * 
     */
    //   ,    Random           ,               ,          
    ArrayList list=new TestRandom().getDiffNO(10);
    System.out.println();
    System.out.println("   n       :"+list);
  }
  /**
   *   n       ,       [0,10)
   * @param n
   * @return
   */
  public ArrayList getDiffNO(int n){
    //    [0-n)         
    // list          
    ArrayList list = new ArrayList();
    Random rand = new Random();
    boolean[] bool = new boolean[n];
    int num = 0;
    for (int i = 0; i < n; i++) {
      do {
        //             
        num = rand.nextInt(n);
      } while (bool[num]);
      bool[num] = true;
      list.add(num);
    }
    return list;
  }
}
備考:以下はJava.util.Random()の方法の要約です。
1.protected int next(int bitts):次の疑似乱数を生成します。
2.ブックレン next Boolean():次の疑似乱数を返します。これはこの後の乱数生成器シーケンスの均一分布をとるbolean値です。
3.void nextBytes(byte[]bytes):ランダムバイトを生成し、ユーザが提供するbyte配列に配置する。
4.double next Double():次の疑似乱数を返します。これはこの後の乱数生成器シーケンスの、0.0と1.0の間に均等に分布するdouble値を取ります。
5 float next Float():次の疑似乱数を返します。これはこの後の乱数生成器シーケンスを取り、0.0と1.0の間にfloat値を均等に分布します。
6.double nextGaussian():次の疑似乱数を返します。これはこの後の乱数生成器のシーケンスを取ったガウス(「正規」)分布のdouble値で、その平均値は0.0標準偏差は1.0です。
7.int nextInt():次の疑似乱数を返します。この乱数生成器のシーケンスに均一に分布するint値です。
8.int nextInt(int n):この後の乱数生成器のシーケンスを取る、指定値(含まない)との間に均等に分布するint値である疑似乱数を返します。
9.long next Long():次の疑似乱数を返します。これはこの後の乱数生成器シーケンスの均一分布をとるlong値です。
10.void setSeed(long seed):この乱数生成器のシードを単一のlongシードで設定します。
いくつかの例をあげます。
1.[0,1.0]区間の小数点を生成する:double d 1=r.nextDouble()
2.[0,5.0]区間の小数点以下を生成する:double d 2=r.next Double()*5;
3.[1,2.5]区間の小数点:double d 3=r.next Double()*1.5+1を生成する。
4.生成-231から231-1までの整数:int n=r.nextInt()
5.[0,10]区間の整数を生成する:

 int n2 = r.nextInt(10);//   
    n2 = Math.abs(r.nextInt() % 10);//   
以上は小编が皆さんに绍介したJava中Randomの绍介です。皆さんに何かお聞きしたいことがあれば、メッセージをください。小编はすぐにご返事します。ここでも私たちのサイトを応援してくれてありがとうございます。