Rumah > Java > javaTutorial > Mengapa Menetapkan Benih dalam Kelas Rawak Java Mengembalikan Nombor yang Sama?

Mengapa Menetapkan Benih dalam Kelas Rawak Java Mengembalikan Nombor yang Sama?

Mary-Kate Olsen
Lepaskan: 2024-11-06 14:21:03
asal
1044 orang telah melayarinya

Why Does Setting the Seed in Java's Random Class Return the Same Number?

Penjanaan Nombor Rawak Java: Mengapa Menetapkan Benih Mengembalikan Nombor Yang Sama?

Walaupun menetapkan benih kelas Rawak dengan nilai tertentu, penjana nombor rawak secara konsisten mengembalikan nombor yang sama. Mari kita terokai perkara yang boleh menyebabkan isu ini.

Memahami Kelas Rawak dan Permulaan Benih

Kelas Rawak Java direka bentuk untuk menjana nombor rawak pseudo. Secara lalai, ia menggunakan jam dalamannya sebagai nilai benih, menyebabkan ia menjana urutan nombor yang agak boleh diramal. Untuk menyesuaikan jujukan, anda boleh menetapkan benih secara eksplisit menggunakan kaedah setSeed().

Benih ialah nilai berangka yang digunakan untuk memulakan keadaan dalaman penjana nombor rawak. Keadaan ini menentukan urutan nombor yang dijana.

Isu: Berkongsi Contoh Rawak

Dalam kod yang disediakan, anda sedang mencipta tika baharu Rawak dalam kaedah rawak(). Ini bermakna setiap kali anda memanggil rawak(), benih baharu sedang ditetapkan, dengan berkesan mengatasi nilai benih yang ditetapkan sebelumnya.

Untuk menyelesaikan isu ini, anda perlu berkongsi tika Rawak merentas seluruh kelas. Dengan mencipta satu contoh dan menetapkan benih sekali apabila kelas dimulakan, anda memastikan urutan nombor yang sama dijana secara konsisten.

Kod Kemas Kini

Kod dikemas kini berikut menyelesaikan isu:

public class Numbers {
    private Random randnum;

    public Numbers() {
        randnum = new Random();
        randnum.setSeed(123456789);
    }

    public int random(int i) {
        return randnum.nextInt(i);
    }
}
Salin selepas log masuk

Dalam kod yang dikemas kini ini:

  1. Medan persendirian yang dipanggil randnum diisytiharkan untuk mewakili tika Rawak yang dikongsi.
  2. Tata Rawak dibuat dan seed ditetapkan dalam pembina, memastikan bahawa seed dimulakan sekali sahaja apabila objek kelas dicipta.

Dengan membuat perubahan ini, anda kini akan memperoleh nombor rawak yang berbeza apabila memanggil rawak() daripada yang berbeza bahagian program anda, sambil tetap menghormati nilai benih yang ditentukan.

Atas ialah kandungan terperinci Mengapa Menetapkan Benih dalam Kelas Rawak Java Mengembalikan Nombor yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan