Jika Anda menginginkan pseudorandom terdistribusi seragam dalam kisaran [0, m
), coba gunakan operator modulo dan metode nilai absolut yang digabungkan dengan nextLong()
metode seperti yang terlihat di bawah ini:
Math.abs(rand.nextLong()) % m;
Di mana rand
objek Random Anda.
Operator modulo membagi dua angka dan mengeluarkan sisa angka tersebut. Sebagai contoh, 3 % 2
adalah 1
karena sisa 3 dan 2 adalah 1.
Karena nextLong()
menghasilkan pseudorandom yang terdistribusi seragam dalam rentang [- (2 ^ 48), 2 ^ 48) (atau di suatu tempat dalam rentang itu), Anda perlu mengambil nilai absolutnya. Jika tidak, modulo nextLong()
metode memiliki peluang 50% untuk mengembalikan nilai negatif, yang berada di luar rentang [0, m
).
Apa yang awalnya Anda minta adalah pseudorandom yang didistribusikan secara seragam di kisaran [0,100). Kode berikut melakukannya:
Math.abs(rand.nextLong()) % 100;