Lebih
Angka acak dengan Math.random() di Java
Untuk menghasilkan angka acak, saya menggunakan rumus:
(int)(Math.random() * max) + min
Rumus yang saya temukan di Google sepertinya selalu seperti itu:
(int)(Math.random() * (max - min) + min)
Yang mana yang benar? Sejauh yang saya tahu, saya tidak pernah mendapatkan angka yang berada di luar jangkauan saya dengan rumus saya
15
3
Pendekatan yang lebih baik adalah:
Rumus Anda menghasilkan angka antara
min
danmin + max
.Hasil:
Lihat secara online di sini: ideone
Milik Anda: Kemungkinan terendah adalah min, kemungkinan tertinggi adalah max+min-1
Google: Kemungkinan terendah adalah min, kemungkinan tertinggi adalah max-1
Yang pertama menghasilkan angka dalam kisaran yang salah, sedangkan yang kedua benar.
Untuk menunjukkan bahwa yang pertama salah, katakanlah
min
adalah 10 danmax
adalah 20. Dengan kata lain, hasilnya diharapkan lebih besar dari atau sama dengan sepuluh, dan sangat kurang dari dua puluh. JikaMath.random()
mengembalikan0.75
, hasil dari rumus pertama adalah25
, yang berada di luar jangkauan.