Java中Random概要_動力ノードJava学院の整理
Javaには二つのRandom関数が存在する。
一、java.lang.Math.Random;
このMath.Random()関数を呼び出して、正の符号を持つdouble値を返すことができます。この値は0.0以上で1.0未満、すなわち、取の範囲は[0.0,1.0]の左閉右開区間で、戻りの値は疑似ランダム選択の数であり、この範囲内で均一に分布します。例は以下の通りです
次のRandom()の2つの構造方法:
Random():新しい乱数生成器を作成します。
Random(long seed):単一のlongシードを使って新しい乱数生成器を作成します。
Randomオブジェクトを構築する時にシードを指定できます。(ここではシードの役割を指定します。続けて見てください。):Random r 1=new Random(20);
あるいは、現在のシステム時間のミリ秒数をシード数とします。Random r 1=new Random()
説明が必要なのは、Randomオブジェクトを作成する時に、任意の適法なシード数を与えられます。シード数はランダムアルゴリズムの起源数だけで、乱数の区間とは関係がありません。下記のJavaコードのように:
具体的な使い方は以下の例です。
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]区間の整数を生成する:
一、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の绍介です。皆さんに何かお聞きしたいことがあれば、メッセージをください。小编はすぐにご返事します。ここでも私たちのサイトを応援してくれてありがとうございます。