1. Cara menghasilkan angka acak di java
1. Gunakan Math.random () di J2SE untuk membuat sistem secara acak memilih desimal tipe ganda antara 0 dan 1, kalikan dengan angka, seperti 25, dan Anda bisa mendapatkan nomor acak dalam kisaran 0 dan 25. Ini tidak tersedia di J2ME;
int randomNumber = (int) math.round (math.random ()*(max-min)+min);
2. Ada metode CurrentTimemillis () di kelas sistem. Metode ini mengembalikan nomor milidetik yang panjang mulai pukul 0:00 pada 1 Januari 1970 ke yang saat ini. Ini dapat digunakan sebagai angka acak, dan juga dapat dimodulo ke angka -angka tertentu, yang dapat membatasi kisaran angka acak. Ketika metode ini menghasilkan beberapa angka acak pada saat yang sama dalam satu loop, itu akan menjadi nilai yang sama, yang memiliki batasan tertentu!
long randomNum = system.currentTimemillis (); int randomNumber = (int) acaknum%(maks-min)+min;
3. Gunakan kelas java.util.random untuk menghasilkan generator angka acak, yang juga merupakan metode yang sering kita gunakan untuk mendapatkan nomor acak dalam program J2ME. Ini memiliki dua bentuk konstruktor, yaitu acak () dan acak (biji panjang). Random () menggunakan waktu saat ini, System.currentTimemillis (), sebagai benih generator, dan acak (biji panjang) menggunakan benih yang ditentukan sebagai benih generator. Setelah objek generator bilangan acak (acak) dihasilkan, berbagai jenis angka acak diperoleh dengan memanggil metode yang berbeda: nextInt (), nextLong (), nextFloat (), nextDouble (), dll. Jika dua objek acak menggunakan benih yang sama (misalnya, keduanya 25) dan memanggil fungsi yang sama dalam urutan yang sama, mereka mengembalikan nilai yang sama persis.
Acak acak = acak baru (); int randomNumber = random.nextInt (maks)%(max-min + 1) + min;
2. N angka non-berulang dalam kisaran acak yang diberikan
1. Metode 1: Yang paling sederhana dan paling mudah dipahami dua siklus untuk menghilangkan beban berat
/ *** Tentukan secara acak n nomor non -resetitif dalam kisaran* Metode paling sederhana dan paling dasar* @param min tentukan kisaran minimum* @param max Tentukan kisaran maksimum* @param n Jumlah nomor acak*/ int statis public [] randomCommon (int min, int max, int n) {if (n> (max - min + 1) (int min, int max, int n) {if (n> (max - min + Min) (int min, int n) {if (n> (max - min + Min) (int min, int n) {if (n> (max - min + Min) {ner) {if (n> (max - min + 1) | | Min (Min) {n) {if (n> (max - min + 1) | } int [] hasil = int baru [n]; Int Count = 0; while (count <n) {int num = (int) (math.random () * (maks - min)) + min; bendera boolean = true; untuk (int j = 0; j <n; j ++) {if (num == hasil [j]) {flag = false; merusak; }} if (flag) {result [count] = num; Count ++; }} hasil pengembalian; } 2. Metode 2: Menggunakan fitur hashset, hanya nilai yang berbeda yang dapat disimpan
/** * Randomly specify N non-repetitive numbers in the range* Using the HashSet feature, only different values can be stored* @param min Specify the minimum value of the range* @param max Specify the maximum value of the range* @param n Random number* @param HashSet<Integer> set Random number result set*/ public static void randomSet(int min, int max, int n, HashSet<Integer> set) { if (n> (maks - min + 1) || max <min) {return; } untuk (int i = 0; i <n; i ++) {// panggil math.random () metode int num = (int) (math.random () * (maks - min))+min; set.add (num); // simpan angka yang berbeda ke hashset} int setSize = set.size (); // Jika nomor yang disimpan kurang dari angka yang ditentukan, maka secara rekursif menghasilkan nomor acak dari nomor yang tersisa, dan loop sehingga ukuran yang ditentukan tercapai IF (setsize <n) {randomSet (min, max, n - setsize, set); // rekursif}} 3. Metode 3: Kecualikan nomor yang tiba secara acak
/*** Secara acak menentukan N angka non-berulang dalam kisaran* dalam array yang diinisialisasi tidak terulang, angka dihasilkan secara acak dan dimasukkan ke dalam hasilnya. * Ganti nomor yang dikirim secara acak ke array yang akan dipilih dengan nomor yang sesuai dengan subskrip array yang akan dipilih (LEN-1)* kemudian secara acak menghasilkan nomor acak berikutnya dari Len-2, dan sebagainya* @param max Tentukan Nilai Rentang Maksimum* @param Min Tentukan Nilai Minimum* @param N nomor angka acak* @Reta @R di @param Min [NOMER MINIMAL* @param Nomor angka acak* @Reta @Reta Int [phafels. max, int n) {int len = max-min+1; if (max <min || n> len) {return null; } // Inisialisasi array yang akan dipilih untuk rentang int [] sumber yang diberikan = int baru [len]; untuk (int i = min; i <min+len; i ++) {source [i-min] = i; } int [] hasil = int baru [n]; Acak rd = acak baru (); INT INDEX = 0; untuk (int i = 0; i <result.length; i ++) {// array yang akan dipilih 0 hingga (len-2) acak index = math.abs (rd.nextInt () % len--); // Masukkan nomor acak ke dalam hasil set hasil [i] = sumber [indeks]; // Ganti angka yang diterima secara acak dalam array yang akan dipilih dengan nomor yang sesuai dengan subskrip array yang akan dipilih (LEN-1) dengan nomor yang sesuai dengan subskrip array yang akan dipilih (LEN-1). sumber [indeks] = sumber [len]; } hasil pengembalian; } Contoh panggilan:
public static void main (string [] args) {int [] result1 = randomCommon (20,50,10); untuk (int i: result1) {System.out.println (i); } int [] result2 = randomArray (20,50,10); untuk (int i: result2) {System.out.println (i); } Hashset <Integer> set = hashset baru <Integer> (); RandomeSet (20,50,10, set); untuk (int j: set) {System.out.println (j); }}3. Kode sampel
package test;import java.util.HashSet;import java.util.Random;public class Snippet { /** * Randomly specify N non-repetition numbers in the range* In the initialized unrepetitioned array, randomly generate a number and put it into the result, * Replace the number that is randomly sent to the array to be randomly sent by the number corresponding to the subscript of the array to be selected (len-1)* Then randomly generate the next random number from len-2, and so on* @param max Specify the maximum range* @param min Specify the minimum range* @param n Number of random numbers* @return int[] Random number result set*/ public static int[] randomArray(int min,int max,int n){ int len = max-min+1; if (max <min || n> len) {return null; } // Inisialisasi array yang akan dipilih untuk rentang int [] sumber yang diberikan = int baru [len]; untuk (int i = min; i <min+len; i ++) {source [i-min] = i; } int [] hasil = int baru [n]; Acak rd = acak baru (); INT INDEX = 0; untuk (int i = 0; i <result.length; i ++) {// array yang akan dipilih 0 hingga (len-2) A acak subscript int s = rd.nextInt ()%len; // System.out.print (S-- +","); index = math.abs (rd.nextInt ()%len-); // system.out.println (index); // Masukkan nomor yang diterima secara acak ke dalam hasil yang ditetapkan [i] = sumber [indeks]; // Ganti nomor yang diterima secara acak dalam array yang akan dipilih dengan nomor yang sesuai dari subskrip array yang akan dipilih (LEN-1) Sumber [indeks] = sumber [LEN]; } hasil pengembalian; } public static void main (string [] args) {// int [] result1 = randomCommon (20,50,10); // for (int i: result1) {// system.out.println (i); //} int [] result2 = acakray (0,4,5); untuk (int i: result2) {System.out.print (i); } // hashset <Integer> set = hashset baru <integer> (); // randomeSet (20,50,10, set); // untuk (int j: set) {// system.out.println (j); //}}}Di atas adalah semua tentang artikel ini, saya harap akan sangat membantu bagi semua orang untuk belajar pemrograman Java.