Rumah >Java >javaTutorial >Math.random() * n lwn. Random.nextInt(n): Kaedah Java Yang Mana Perlu Anda Gunakan untuk Integer Rawak?
Memahami Perbezaan antara Math.random() * n dan Random.nextInt(n)
Apabila bekerja dengan nombor rawak di Jawa, adalah penting untuk memahami perbezaan antara Math.random() * n dan Random.nextInt(n).
Kaedah Math.random() menjana nilai berganda pseudo-rawak antara 0 dan 1 (eksklusif), manakala Random.nextInt(n) mengembalikan integer teragih seragam dalam julat 0 hingga n-1 (inklusif).
Walaupun nampak persamaannya, terdapat perbezaan yang ketara antara kedua-duanya kaedah.
Kecekapan dan Bias
Random.nextInt(n) adalah lebih cekap daripada Math.random() * n kerana ia memerlukan lebih sedikit pengiraan. Math.random() mesti menjana nilai berganda dan kemudian mendarabkannya dengan n, manakala Random.nextInt(n) hanya perlu menjana integer dalam julat yang ditentukan.
Selain itu, Random.nextInt(n) ialah kurang berat sebelah daripada Math.random() * n. Math.random() boleh menghasilkan sedikit berat sebelah terhadap integer tertentu disebabkan oleh cara ia menjana nilai rawak pseudo. Random.nextInt(n) menggunakan algoritma yang memastikan pengedaran seragam, menghapuskan potensi bias ini.
Penjelasan
Seperti yang dijelaskan dalam siaran Sun Forums, Math.random( ) secara dalaman menggunakan Random.nextDouble(), yang menggunakan Random.next() dua kali untuk menjana dua kali ganda dengan bit teragih seragam dalam mantissanya. Sebaliknya, Random.nextInt(n) menggunakan Random.next() kurang daripada dua kali secara purata dan menggunakan modulo n pada keputusannya untuk memastikan pengedaran seragam dalam julat yang ditentukan.
Kesimpulan
Untuk menjana integer rawak dalam julat 0 hingga n-1, Random.nextInt(n) ialah kaedah pilihan. Ia lebih cekap dan kurang berat sebelah daripada Math.random() * n.
Atas ialah kandungan terperinci Math.random() * n lwn. Random.nextInt(n): Kaedah Java Yang Mana Perlu Anda Gunakan untuk Integer Rawak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!