Rumah >Java >javaTutorial >Mengapa Saya Terus Mendapat Nombor Rawak Yang Sama di Java Apabila Menggunakan Benih?

Mengapa Saya Terus Mendapat Nombor Rawak Yang Sama di Java Apabila Menggunakan Benih?

Barbara Streisand
Barbara Streisandasal
2024-11-09 13:00:03767semak imbas

Why Do I Keep Getting the Same Random Numbers in Java When Using a Seed?

Penjanaan Nombor Rawak Java dengan Benih: Menyahpepijat Output Identik

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.

Memahami Penjanaan Nombor Pseudorandom dan Benih

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.

Melaraskan Kod untuk Menjana Urutan Berubah-ubah

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.

Pembetulan Kod

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!

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