1。Javaで乱数を生成する方法
1。J2SEでMath.random()を使用して、システムをランダムに0〜1の間のダブルタイプの小数を選択し、25などの数字を掛けると、0と25の範囲で乱数を取得できます。これはJ2meでは使用できません。
int randomnumber =(int)math.round(math.random()*(max-min)+min);
2。システムクラスにはCurrentTimeMillis()メソッドがあります。この方法は、1970年1月1日の0:00から現在の方法に長いミリ秒数を返します。乱数として使用することもできます。また、特定の数値にモジュローされ、乱数の範囲を制限することもできます。この方法がループで同時に複数の乱数を生成すると、同じ値になり、特定の制限があります!
long randomnum = system.currenttimemillis(); int randomnumber =(int)randomnum%(max-min)+min;
3. java.util.randomクラスを使用して、乱数ジェネレーターを生成します。これは、J2MEプログラムで乱数を取得するためによく使用する方法でもあります。ランダム()とランダム(長いシード)の2つの形式のコンストラクターがあります。 RANDAM()は、現在の時刻であるSystem.CurrentTimemillis()を使用し、発電機の種子として使用し、ランダム(長い種子)は、指定された種子を発電機の種子として使用します。乱数ジェネレーター(ランダム)オブジェクトが生成されると、異なるタイプの乱数が異なる方法を呼び出して取得されます:nextint()、nextlong()、nextfloat()、nextdouble()など。2つのランダムオブジェクトが同じシードを使用し(両方が25)、同じ関数を呼び出し、同じ値を正確に返します。
RANDOM RANDOM = new Random(); int randomnumber = random.nextint(max)%(max-min + 1) + min;
2。Nランダムに与えられた範囲内の非反復数
1。メソッド1:重量を除去するために2つのサイクルを最も簡単で理解しやすい
/ ***範囲内のn非反復数をランダムに指定します*最も単純で最も基本的な方法* @param min @param min @param max最大範囲を指定* @param n乱数数を指定*/ public static int [] randomcommon(int min、int max、int n){if(n>(max -min + 1){max <min){max <min){max -min + 1){max -min + 1) } int [] result = new int [n]; int count = 0; while(count <n){int num =(int)(math.random() *(max -min)) + min;ブールフラグ= true; for(int j = 0; j <n; j ++){if(num == result [j]){flag = false;壊す; }} if(flag){result [count] = num; count ++; }} return result; } 2。方法2:ハッシュセットの機能を使用すると、異なる値のみを保存できます
/ ***ランダムに範囲のn非反対数値を指定します*ハッシュセット機能を使用して、異なる値のみを保存できます* @param min範囲の最小値を指定* @param max範囲の最大値を指定します* @param nランダム数* @paramハッシュセット<integer>セットランダム数結果セット(n>(max -min + 1)|| max <min){return; } for(int i = 0; i <n; i ++){// math.random()method int num =(int)(math.random() *(max -min))+minを呼び出します。 set.add(num); //異なる数値をハッシュセットに保存} int setsize = set.size(); //保存された数値が指定された数値より少ない場合、残りの数値のランダムな数を再帰的に生成し、指定されたサイズに到達するようにループを生成します。 3。メソッド3:ランダムに到着した数値を除外します
/***初期化された非極性アレイの範囲*のn非反復数をランダムに指定すると、数値がランダムに生成され、結果に入れられます。 *選択される配列のサブスクリプト(LEN-1)に対応する数値で選択されるアレイにランダムに送信される数値を置き換えます(LEN-1)* LEN-2から次の乱数をランダムに生成します* @param Maxは最大範囲値を指定します* @param min mini max、int n){int len = max-min+1; if(max <min || n> len){return null; } //特定の範囲で選択する配列を初期化int [] source = new int [len]; for(int i = min; i <min+len; i ++){source [i-min] = i; } int [] result = new int [n];ランダムrd = new Random(); int index = 0; for(int i = 0; i <result.length; i ++){//選択される配列0〜(len-2)ランダムindex = math.abs(rd.nextint()%len-); //ランダム数を結果セットに配置します結果[i] = source [index]; //選択される配列のサブスクリプト(LEN-1)に対応する番号で選択される配列でランダムに受信された数値を、選択する配列のサブスクリプト(LEN-1)に対応する数字を置き換えます。ソース[index] = source [len]; } return result; }呼び出しインスタンス:
public static void main(string [] args){int [] result1 = randomcommon(20,50,10); for(int i:result1){system.out.println(i); } int [] result2 = randomArray(20,50,10); for(int i:result2){system.out.println(i); } hashset <integer> set = new Hashset <Integer>();ランダムセット(20,50,10、セット); for(int j:set){system.out.println(j); }}3。サンプルコード
パッケージテスト; java.util.hashset; import java.util.random; public class snippet { /***は、初期化されていないアレイの範囲*のn非再検出数値をランダムに指定し、ランダムに数値を生成し、結果に配置します。 (LEN-1)*次に、LEN-2から次の乱数をランダムに生成します。* @param Maxは最大範囲を指定します* @param min @param nランダム数の数* @return int []乱数結果セット*/ public static int []ランダムアレイ(int min、int max、n){int len = max-min+1; if(max <min || n> len){return null; } //特定の範囲で選択する配列を初期化int [] source = new int [len]; for(int i = min; i <min+len; i ++){source [i-min] = i; } int [] result = new int [n];ランダムrd = new Random(); int index = 0; for(int i = 0; i <result.length; i ++){//選択される配列0〜(len-2)aランダムな添え字int s = rd.nextint()%len; // system.out.print(s- +"、"); index = math.abs(rd.nextint()%len-); // system.out.println(index); //ランダムに受信した数値を結果セット結果[i] = source [index]; //選択する配列のサブスクリプトの対応する数値(LEN-1)ソース[index] = source [len]; } return result; } public static void main(string [] args){// int [] result1 = randomcommon(20,50,10); // for(int i:result2){system.out.print(i); } // hashset <integer> set = new hashset <integer>(); // randomset(20,50,10、set); //(int j:set){// system.out.println(j); //}}}}}上記はこの記事に関するものです。誰もがJavaプログラミングを学ぶことが役立つことを願っています。