Rumah > Java > javaTutorial > teks badan

Mengapa Menetapkan Benih dalam Penjana Nombor Rawak Java Menghasilkan Output Berulang?

DDD
Lepaskan: 2024-11-12 19:04:02
asal
396 orang telah melayarinya

Why Does Setting the Seed in Java's Random Number Generator Result in Repeated Outputs?

Menyelesaikan Isu Penjanaan Nombor Rawak Berulang di Jawa dengan Set Seed

Penerangan Isu:

Melaksanakan penjana nombor rawak, pembangun mungkin menghadapi situasi di mana memanggil kaedah nombor rawak, walaupun menetapkan benih, terus menjana output yang sama.

Contoh Kod:

Pertimbangkan coretan kod berikut:

class Numbers {
    public int random(int i) {
        Random randnum = new Random();
        randnum.setSeed(123456789);
        return randnum.nextInt(i);
    }
}
Salin selepas log masuk

Setelah memanggil nombor.random(10) beberapa kali, ia akan mengembalikan nombor yang sama, seperti 5, dan bukannya output yang berbeza.

Penyelesaian:

Untuk memastikan penjanaan nombor rawak unik dengan benih yang dipratentukan, tika Rawak() mesti dikongsi di seluruh kelas. Ini boleh dicapai melalui pengubahsuaian kod berikut:

class Numbers {
    Random randnum;

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

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

Dengan memulakan tika randnum dalam pembina kelas, ia menjadi sumber kongsi yang boleh diakses oleh semua kaedah dalam kelas. Ini memastikan bahawa benih ditetapkan sekali sahaja, dan panggilan seterusnya ke kaedah rawak() menjana nombor rawak yang berbeza.

Atas ialah kandungan terperinci Mengapa Menetapkan Benih dalam Penjana Nombor Rawak Java Menghasilkan Output Berulang?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan