Menghasilkan Angka Acak di Jawa

Menghasilkan serangkaian angka acak adalah salah satu tugas umum yang muncul dari waktu ke waktu. Di Jawa, itu bisa dicapai hanya dengan menggunakan java.util. Kelas acak.

Langkah pertama, seperti halnya penggunaan API apa pun kelas, adalah dengan meletakkan pernyataan impor sebelum dimulainya kelas program Anda:

Selanjutnya, buat objek acak:

Objek acak memberi Anda generator angka acak sederhana. Metode objek memberikan kemampuan untuk memilih angka acak. Misalnya, metode nextInt () dan nextLong () akan mengembalikan angka yang berada dalam kisaran nilai (negatif dan positif) dari tipe data int dan panjang masing-masing:

Angka yang dikembalikan akan dipilih secara int dan nilai panjang:

Memilih Angka Acak Dari Kisaran Tertentu

Biasanya angka acak yang akan dihasilkan harus dari rentang tertentu (mis., Antara 1 hingga 40 secara inklusif). Untuk tujuan ini, metode nextInt () juga dapat menerima parameter int. Ini menunjukkan batas atas untuk rentang angka. Namun, angka batas atas tidak termasuk sebagai salah satu angka yang dapat dipilih. Itu mungkin terdengar membingungkan tetapi metode nextInt () bekerja dari nol ke atas. Sebagai contoh:

instagram viewer

hanya akan memilih nomor acak dari 0 hingga 39 secara inklusif. Untuk memilih dari rentang yang dimulai dengan 1, cukup tambahkan 1 ke hasil metode nextInt (). Misalnya, untuk memilih angka antara 1 hingga 40 secara inklusif tambahkan satu ke hasilnya:

Jika rentang dimulai dari angka yang lebih tinggi dari yang Anda harus:

  • minus angka awal dari angka batas atas dan kemudian tambahkan satu.
  • tambahkan nomor awal ke hasil metode nextInt ().

Misalnya, untuk memilih angka dari 5 hingga 35 secara inklusif, angka batas atas adalah 35-5 + 1 = 31 dan 5 perlu ditambahkan ke hasilnya:

Seberapa Random Kelas Acak itu?

Saya harus menunjukkan bahwa kelas acak menghasilkan angka acak dengan cara deterministik. Algoritma yang menghasilkan keacakan didasarkan pada nomor yang disebut seed. Jika nomor seed diketahui maka dimungkinkan untuk mencari tahu nomor yang akan dihasilkan dari algoritma. Untuk membuktikan ini saya akan menggunakan angka dari tanggal itu Neil Armstrong pertama kali menginjak Bulan sebagai nomor benih saya (20 Juli 1969):

Tidak peduli siapa yang menjalankan kode ini urutan nomor "acak" yang dihasilkan adalah:

Secara default nomor seed yang digunakan oleh:

adalah waktu saat ini dalam milidetik sejak 1 Januari 1970. Biasanya ini akan menghasilkan angka acak yang cukup untuk sebagian besar tujuan. Namun, perhatikan bahwa dua generator angka acak yang dibuat dalam milidetik yang sama akan menghasilkan angka acak yang sama.

Juga berhati-hatilah saat menggunakan kelas Acak untuk aplikasi apa pun yang harus memiliki generator nomor acak yang aman (mis., Program perjudian). Mungkin saja untuk menebak nomor seed berdasarkan waktu aplikasi berjalan. Secara umum, untuk aplikasi di mana angka acak benar-benar kritis, yang terbaik adalah menemukan alternatif untuk objek acak. Untuk sebagian besar aplikasi di mana hanya perlu ada elemen acak tertentu (mis., Dadu untuk permainan papan) maka itu berfungsi dengan baik.