Menghasilkan Angka Acak di Java: Panduan Praktis dengan Random dan Math.random
Dalam tutorial singkat ini Anda akan mempelajari cara menghasilkan nilai acak di Java menggunakan dua pendekatan paling umum: java.util.Random dan Math.random(). Keduanya adalah bagian dari JDK, tetapi masing-masing melayani kasus penggunaan yang sedikit berbeda dan menawarkan fitur unik.
- java.util.Random – Menghasilkan bilangan dari tipe primitif apa pun dan dapat di-seed untuk reproduktibilitas.
- Math.random() – Menyediakan cara cepat untuk mendapatkan double dalam rentang [0.0, 1.0) tanpa membuat objek.
Pembangkitan Angka Acak dengan java.util.Random
Kelas Random dapat menghasilkan nilai int, long, float, double, dan boolean. Buat instance sekali dan gunakan kembali objek yang sama untuk menghindari overhead kinerja.
Berikut adalah contoh lengkap yang menghasilkan sepuluh integer acak antara 0 dan 99 (inklusif). Jika Anda membutuhkan batas atas yang inklusif, tambahkan satu ke argumen.
import java.util.Random; public class RandomNumbers { public static void main(String[] args) { Random rng = new Random(); for (int i = 0; i < 10; i++) { int randomNumber = rng.nextInt(100); // 0‑99 System.out.println("Angka Acak: " + randomNumber); } } } Keluaran Biasa:
Angka Acak: 17 Angka Acak: 57 Angka Acak: 73 Angka Acak: 48 Angka Acak: 68 Angka Acak: 86 Angka Acak: 34 Angka Acak: 97 Angka Acak: 73 Angka Acak: 18
Karena Random aman untuk thread untuk sebagian besar penggunaan, Anda dapat berbagi instance yang sama di beberapa thread jika diperlukan. Untuk urutan yang dapat direproduksi, berikan seed: new Random(42).
Pembangkitan Angka Acak dengan Math.random()
Saat Anda hanya membutuhkan double cepat dalam rentang [0.0, 1.0), Math.random() nyaman. Ini secara internal mendelegasikan ke satu instance Random, jadi efisien untuk beban kerja kecil.
Contoh: menghasilkan sepuluh nilai double.
public class DemoRandom { public static void main(String[] args) { for (int i = 0; i < 10; i++) { System.out.println(Math.random()); } } } Keluaran Biasa:
0.46518450373334297 0.14859851177803485 0.5628391820492477 0.6323378498048606 0.1740198445692248 0.9140544122258946 0.9167350036262347 0.49251219841030147 0.7426056725722353
Untuk menghasilkan integer atau double dalam rentang yang berbeda, gabungkan Math.random() dengan aritmatika. Misalnya, untuk mendapatkan integer acak antara 1 dan 10 inklusif: (int)(Math.random() * 10) + 1.
Poin Utama
- Gunakan
java.util.Random saat Anda membutuhkan berbagai tipe primitif atau urutan deterministik melalui seeding. - Gunakan
Math.random() untuk double sekali kali dalam interval [0.0, 1.0). - Selalu gunakan kembali instance
Random yang sama untuk menghindari overhead seeding berulang. - Untuk keacakan yang aman thread dan berkinerja tinggi di lingkungan bersamaan, pertimbangkan
ThreadLocalRandom (Java 7+).