Rumah >Java >javaTutorial >Math.random() * n lwn. Random.nextInt(n): Kaedah Java Yang Mana Perlu Anda Gunakan untuk Integer Rawak?

Math.random() * n lwn. Random.nextInt(n): Kaedah Java Yang Mana Perlu Anda Gunakan untuk Integer Rawak?

Patricia Arquette
Patricia Arquetteasal
2024-12-21 18:24:19573semak imbas

Math.random() * n vs. Random.nextInt(n): Which Java Method Should You Use for Random Integers?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn