Rumah >Java >javaTutorial >Mengapa Saya Terus Mendapat Nombor Rawak Yang Sama di Java Apabila Menggunakan Benih?
Di Java, kelas Rawak menyediakan cara untuk menjana nombor pseudorandom. Dengan menentukan benih sebagai hujah, adalah mungkin untuk mengawal urutan nombor yang dijana. Walau bagaimanapun, isu timbul apabila benih yang sama digunakan berulang kali, menghasilkan urutan nombor yang sama.
Penjana nombor pseudorandom (PRNG) ialah algoritma yang menjana urutan nombor yang kelihatan rawak tetapi sebenarnya ditentukan oleh set kecil nilai awal, yang dikenali sebagai benih. Dengan menentukan benih, PRNG menghasilkan urutan nombor yang sama setiap kali.
Untuk menyelesaikan isu output yang sama, adalah perlu untuk memahami cara biji berfungsi dalam PRNG. Di Java, apabila memanggil kelas Rawak dengan argumen benih, ia mengekalkan keadaan yang sama untuk panggilan masa hadapan, membawa kepada jujukan nombor yang sama.
Untuk menjana jujukan yang berbeza-beza, adalah disyorkan untuk memanggil argumen sifar pembina Rawak, yang menggunakan masa nano sistem sebagai benih. Ini memastikan bahawa benih yang berbeza digunakan setiap kali kaedah dipanggil.
Kod Java yang diperbetulkan berikut menggunakan pembina hujah sifar untuk menjana jujukan nombor rawak yang berbeza-beza:
private Random generator = new Random(); double randomGenerator() { return generator.nextDouble() * 0.5; }
Dengan mengalihkan tika Rawak ke luar kaedah dan menggunakan masa nano sistem sebagai benih, kod ini menghapuskan isu output yang sama dan menjana jujukan nombor rawak yang berbeza.
Atas ialah kandungan terperinci Mengapa Saya Terus Mendapat Nombor Rawak Yang Sama di Java Apabila Menggunakan Benih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!