ホームページ >Java >&#&チュートリアル >Javaで乱数を設定する方法
Java はプログラマーや開発者によって使用されるプログラミング言語です。多くの初心者は、Java を使用して開発するときに乱数を設定する方法はどうすればよいかという単純な疑問に陥ります。 Javaで乱数を設定するにはどうすればよいですか?乱数を使用する必要がある場所がよくありますが、心配しないでください。Java での乱数の設定に関する詳細なチュートリアルを見てみましょう。
1. j2se では、Math.random() メソッドを使用して乱数を生成できます。生成された乱数は、100 を乗算するなど、特定の数値で乗算できます。これは 100 以内の乱数であり、j2me では利用できません。
2. java.util パッケージは、乱数を生成するための新しい Random クラスを提供します。これは、j2me でも使用されます。プログラムでよく使われる乱数の取得方法。
3. System クラスに currentTimeMillis() メソッドがあります。このメソッドは、1970 年 1 月 1 日の 0:00:00 から現在までのミリ秒数を返します。戻り値の型は、long として取得できます。乱数を生成するには、それを使用していくつかの数値を法化し、それを範囲に制限することができます
実際、Random のデフォルトの構築方法では、上記の 3 番目の方法も乱数を生成するために使用されます
次の指示がありますメソッド 2 の Random クラスの場合:
java.util.Random クラスを構築するには 2 つの方法があります: シードありとシードなし
シードなし:
このメソッドは乱数を返します。結果は毎回異なります
public class RandomTest {
public static void main(String[] args) {
java.util.Random r=new java.util.Random();
for(int i =0;i<10;i++ ){
System.out.println(r.nextInt());
}
}
シードあり:
このように、プログラムを何度実行しても結果が返されます。どれも同じです
public static void main(String[] args) {
java.util.Random r=new java.util.Random(10);
for(int i=0;i<10;i++ ){
System.out.println(r.nextInt());
}
}
2つのメソッドの違いは
(1) まず、Java Docを開いてください、説明が表示されますRandom クラスの :
このクラスのインスタンスは、疑似乱数ストリームを生成するために使用されます。このクラスは、線形合同式を使用して変更できる 48 ビット シードを使用します (「The Art of Computer Programming, Volume 2」を参照)。 「ドナルド・クヌース著」、セクション 3.2.1)。
同じシードを持つ 2 つの Random インスタンスを作成し、各インスタンスに対して同じ一連のメソッド呼び出しを行うと、同じ一連の数値が生成されて返されます。この機能を確実に実現するために、Random クラスに特定のアルゴリズムを指定します。 Java コードの完全な移植性を実現するには、Java 実装では、Random クラスでここに示すすべてのアルゴリズムを使用するようにする必要があります。ただし、Random クラスのサブクラスは、すべてのメソッドの一般規約に準拠している限り、他のアルゴリズムを使用することができます。
Java Doc では Random クラスについて非常にわかりやすく説明されており、テストでもこれが検証されています。
(2) シード番号が指定されていない場合、Random インスタンスのシード番号は現在時刻のミリ秒数になります。 現在時刻のミリ秒数は System.currentTimeMillis() で取得できます。 JDK のソース コードを開くと、これがはっきりとわかります。
/**
* 新しい乱数生成器を作成します。そのシードは
*現在時刻に基づく値に初期化されます:
* Random() { this(System.currentTimeMillis()); }java.lang.System#currentTimeMillis()
*/
public Random() { this(System.currentTimeMillis()); }
さらに:
ランダムオブジェクトの nextInt()、nextInt(int n) メソッドの説明:
int nextInt()
次の擬似乱数を返します。これは、この乱数発生器のシーケンス内で一様に分散された int 値です。
int nextInt(int n)
この乱数生成器のシーケンスから取得された、0 (両端を含む) から指定された値 (両端を含まない) までの一様に分散された int 値である擬似乱数を返します。
以上がJavaで乱数を設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。