Rumah > Java > javaTutorial > teks badan

Mengapa saya mendapat nombor rawak yang sama apabila menggunakan benih yang sama di Jawa?

DDD
Lepaskan: 2024-11-09 14:53:02
asal
607 orang telah melayarinya

Why do I get identical random numbers when using the same seed in Java?

Nombor Rawak Java dengan Benih Tetap: Mengapa Keluaran Sama?

Dalam kod anda, anda telah menentukan kaedah untuk menjana nombor rawak menggunakan benih tertentu. Walau bagaimanapun, anda perasan bahawa apabila anda menyediakan benih yang sama, kesemua 100 nombor yang dijana adalah sama.

Tingkah laku ini dijangka kerana menggunakan benih yang sama dalam pembina Rawak menghasilkan urutan nombor yang boleh diramal. Benih ialah nilai benih yang memulakan penjana nombor rawak. Ini adalah ciri penting untuk ujian, kerana ia membolehkan hasil yang konsisten apabila menjalankan ujian semula.

Memahami Penjanaan Nombor Pseudorandom

Penjana nombor Pseudorandom (PRNG) seperti Random dalam Java menjana urutan yang hampir dengan rawak sebenar. Walau bagaimanapun, mereka mempunyai set kecil nilai awal, termasuk benih, yang menentukan jujukan sepenuhnya.

Membetulkan Kod

Untuk menjana jujukan nombor rawak yang berbeza, anda harus mengelakkan menggunakan benih yang sama setiap kali. Sebaliknya, buat contoh Rawak di luar kaedah anda dan mulakan ia tanpa hujah. Kejadian ini akan menggunakan kaedah nanoTime untuk menjana nilai benih yang unik.

Berikut ialah kod yang diperbetulkan:

private Random generator = new Random();
double randomGenerator() {
    return generator.nextDouble() * 0.5;
}
Salin selepas log masuk

Dengan perubahan ini, anda akan mendapat jujukan nombor rawak yang berbeza setiap kali anda panggil kaedah randomGenerator.

Atas ialah kandungan terperinci Mengapa saya mendapat nombor rawak yang sama apabila menggunakan benih yang sama di Jawa?. 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