Generator Angka Acak Java

Pelajari cara menghasilkan angka acak di Java dengan contoh kode interaktif. Jelajahi Random.nextInt(), SecureRandom, ThreadLocalRandom, dan Math.random() dengan penjelasan terperinci.

Beberapa Metode Praktik Terbaik Salinan Instan

Butuh Nomor Acak Cepat?

Coba generator angka acak online kami untuk hasil instan tanpa menulis kode apa pun.

Buka Generator Angka Acak

Editor Kode Java

Pelajari cara menghasilkan angka acak di Java dengan contoh kode interaktif. Jelajahi Random.nextInt(), SecureRandom, ThreadLocalRandom, dan Math.random() dengan penjelasan terperinci.

Keluaran

Output Simulasi (Java berjalan di server)

Click \"Run Code\" to see example output

Acak Dasar dengan java.util.Random

Gunakan Random.nextInt() untuk menghasilkan bilangan bulat acak dalam rentang tertentu. Ini adalah metode paling umum untuk pembuatan angka acak tujuan umum di Java.

Memahami Java Random Number Generation

Java menyediakan beberapa cara untuk menghasilkan angka acak, masing-masing dioptimalkan untuk kasus penggunaan yang berbeda. java.util.Random menggunakan algoritma Linear Congruential Generator (LCG), SecureRandom menyediakan angka acak yang kuat secara kriptografis, ThreadLocalRandom menawarkan pembuatan thread yang aman untuk aplikasi bersamaan, dan Math.random() menyediakan cara sederhana untuk menghasilkan ganda acak.

java.util.Random

java.util.Random menyediakan pembuatan angka pseudo-acak cepat yang cocok untuk simulasi, game, dan tugas pemrograman umum. Aman untuk penggunaan dasar.

Acak Aman

java.security.SecureRandom menggunakan algoritme khusus platform (SHA1PRNG, NativePRNG) untuk menghasilkan angka acak yang aman secara kriptografis untuk aplikasi keamanan.

ThreadLocalRandom

ThreadLocalRandom menyediakan pembuatan nomor acak yang aman utas yang efisien yang dirancang khusus untuk aplikasi multi-utas, menghindari pertengkaran dan overhead sinkronisasi.

Matematika.acak()

Math.random() adalah metode sederhana yang mengembalikan nilai ganda antara 0,0 dan 1,0. Nyaman untuk perhitungan cepat tetapi kurang fleksibel dibandingkan opsi lain.

Kasus Penggunaan Umum

Game & Simulasi

Hasilkan lemparan dadu acak, undian kartu, kemunculan musuh, dan acara permainan menggunakan Random.nextInt() atau ThreadLocalRandom dalam loop game.

Keamanan & Kriptografi

Buat kata sandi aman, kunci API, token sesi, dan garam enkripsi menggunakan SecureRandom untuk keacakan kekuatan kriptografi.

Aplikasi Bersamaan

Gunakan ThreadLocalRandom dalam aliran paralel dan aplikasi multi-utas untuk menghindari pertengkaran dan meningkatkan performa.

Pengujian Perangkat Lunak

Buat data pengujian acak, input pengujian fuzz, dan kasus tepi untuk memastikan cakupan kode yang kuat dan deteksi bug dalam aplikasi Java.

Cara Kerja Java Random Number Generation

Java's java.util.Random class uses a Linear Congruential Generator (LCG) algorithm with a 48-bit seed. It provides a simple way to generate pseudo-random numbers and is synchronized for thread safety.

The SecureRandom class provides cryptographically strong random numbers by using platform-specific implementations. On most systems, it uses the operating system's entropy source or hardware random number generators.

ThreadLocalRandom, introduced in Java 7, is designed for multi-threaded applications. It uses a random number generator that is isolated to the current thread, avoiding synchronization overhead and contention.

Tips Ahli untuk Java Random Generation

🎯

Pilih API yang Tepat

Gunakan Random untuk kasus sederhana, SecureRandom untuk keamanan, ThreadLocalRandom untuk aplikasi bersamaan, dan Math.random() hanya untuk prototipe cepat. Masing-masing memiliki kasus penggunaan tertentu.

🔒

Selalu gunakan SecureRandom untuk keamanan

Jangan pernah menggunakan Random atau Math.random() untuk kata sandi, token, atau operasi kriptografi. Selalu gunakan SecureRandom untuk memastikan keacakan yang kuat dan menghindari pola yang dapat diprediksi.

Optimalkan untuk Akses Bersamaan

Dalam aplikasi multi-threaded, ThreadLocalRandom secara signifikan lebih cepat daripada menyinkronkan objek Random. Gunakan dalam aliran paralel dan koleksi bersamaan.

Spesifikasi teknis

Algoritma

  • Generator Kongruensial Linier (Kelas acak)
  • SHA1PRNG atau NativePRNG (SecureRandom)
  • ThreadLocalRandom (Java 7+, berdasarkan Acak)
  • Ganda pseudo-acak (Math.random())

Karakteristik Kinerja

  • Math.random(): Tercepat untuk ganda sederhana
  • ThreadLocalRandom: Terbaik untuk akses bersamaan
  • Acak: Tujuan umum yang baik, overhead yang disinkronkan
  • SecureRandom: Lebih lambat karena pengumpulan entropi