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); } }
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); } }
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!