Tutorial ringkas ini akan menggambarkan cara menghasilkan pertama menggunakan Java biasa dan menggunakan perpustakaan Apache Commons Math.
Artikel ini adalah sebahagian daripada siri "Java - Back to Basic" di Baeldung.
1. Hasilkan Panjang Tidak Terikat
Mari mulakan dengan menghasilkan Long:
@Test public void givenUsingPlainJava_whenGeneratingRandomLongUnbounded_thenCorrect() { long generatedLong = new Random().nextLong(); }
2. Jana Jangka Panjang dalam Jangkauan
2.1. Panjang Acak Dengan Java Plain
Seterusnya - mari lihat membuat Long yang dibatasi secara rawak - iaitu nilai Long dalam julat atau selang tertentu:
@Test public void givenUsingPlainJava_whenGeneratingRandomLongBounded_thenCorrect() { long leftLimit = 1L; long rightLimit = 10L; long generatedLong = leftLimit + (long) (Math.random() * (rightLimit - leftLimit)); }
2.2. Rawak Panjang Dengan Matematik Apache Commons
Mari kita lihat menghasilkan Long rawak dengan API yang lebih bersih dan Math Commons:
@Test public void givenUsingApacheCommons_whenGeneratingRandomLongBounded_thenCorrect() { long leftLimit = 10L; long rightLimit = 100L; long generatedLong = new RandomDataGenerator().nextLong(leftLimit, rightLimit); }
3. Hasilkan Integer Tidak Berikat
Mari kita teruskan untuk menghasilkan Integer rawak tanpa had:
@Test public void givenUsingPlainJava_whenGeneratingRandomIntegerUnbounded_thenCorrect() { int generatedInteger = new Random().nextInt(); }
Seperti yang anda lihat, ia hampir menghasilkan masa yang lama.
4. Hasilkan Integer Dalam Julat
4.1. Integer Rawak Dengan Java Plain
Seterusnya - bilangan bulat rawak dalam julat tertentu:
@Test public void givenUsingPlainJava_whenGeneratingRandomIntegerBounded_thenCorrect() { int leftLimit = 1; int rightLimit = 10; int generatedInteger = leftLimit + (int) (new Random().nextFloat() * (rightLimit - leftLimit)); }
4.2. Integer Rawak Dengan Matematik Commons
Dan sama dengan Common Math:
@Test public void givenUsingApache_whenGeneratingRandomIntegerBounded_thenCorrect() { int leftLimit = 1; int rightLimit = 10; int generatedInteger = new RandomDataGenerator().nextInt(leftLimit, rightLimit); }
5. Hasilkan Float Tidak Terikat
Sekarang, mari kita buat penjanaan terapung - pertama tanpa had:
@Test public void givenUsingPlainJava_whenGeneratingRandomFloatUnbouned_thenCorrect() { float generatedFloat = new Random().nextFloat(); }
6. Hasilkan Float Dalam Julat
6.1. Float Rawak Dengan Java Plain
Dan apungan rawak terikat:
@Test public void givenUsingPlainJava_whenGeneratingRandomFloatBouned_thenCorrect() { float leftLimit = 1F; float rightLimit = 10F; float generatedFloat = leftLimit + new Random().nextFloat() * (rightLimit - leftLimit); }
6.2. Random Float With Commons Math
Sekarang - apungan rawak terikat dengan Math Commons:
@Test public void givenUsingApache_whenGeneratingRandomFloatBounded_thenCorrect() { float leftLimit = 1F; float rightLimit = 10F; float randomFloat = new RandomDataGenerator().getRandomGenerator().nextFloat(); float generatedFloat = leftLimit + randomFloat * (rightLimit - leftLimit); }
7. Hasilkan Ganda Tidak Terikat
7.1. Rawak Tidak Berikat Berganda Dengan Java Plain
Akhirnya - kita akan menghasilkan nilai berganda rawak - pertama, dengan Java Math API:
@Test public void givenUsingPlainJava_whenGeneratingRandomDoubleUnbounded_thenCorrect() { double generatedDouble = Math.random(); }
7.2. Matematik Berkembar Tidak Berawak Secara Rawak
Serta nilai berganda rawak dengan perpustakaan Apache Commons Math:
@Test public void givenUsingApache_whenGeneratingRandomDoubleUnbounded_thenCorrect() { double generatedDouble = new RandomDataGenerator().getRandomGenerator().nextDouble(); }
8. Hasilkan Ganda dalam Julat
8.1. Double Random Bounded Dengan Java Plain
Dalam contoh ini, mari kita lihat rawak berganda yang dihasilkan dalam selang masa - dengan Java:
@Test public void givenUsingPlainJava_whenGeneratingRandomDoubleBounded_thenCorrect() { double leftLimit = 1D; double rightLimit = 10D; double generatedDouble = leftLimit + new Random().nextDouble() * (rightLimit - leftLimit); }
8.2. Rawak Terikat Berganda Dengan Matematik Commons
Dan terakhir - dua kali rawak dalam selang waktu, menggunakan perpustakaan Apache Commons Math:
@Test public void givenUsingApache_whenGeneratingRandomDoubleBounded_thenCorrect() { double leftLimit = 1D; double rightLimit = 100D; double generatedDouble = new RandomDataGenerator().nextUniform(leftLimit, rightLimit); }
Dan di sana anda memilikinya - contoh cepat dan tepat mengenai bagaimana menjana kedua-dua nilai yang tidak terikat dan terikat untuk primitif berangka yang paling umum di Java.
9. Kesimpulannya
Tutorial ini menggambarkan bagaimana kita dapat menghasilkan nombor rawak sama ada terikat atau tidak terikat, menggunakan teknik dan perpustakaan yang berbeza.
Seperti biasa, pelaksanaan semua contoh dan coretan ini terdapat dalam projek GitHub. Ini adalah projek berasaskan Maven sehingga mudah diimport dan dijalankan.