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