Rumah  >  Artikel  >  Java  >  Bagaimana untuk Menjana Nombor Rawak Bukan Deterministik di Jawa Apabila Menggunakan Benih Tetap?

Bagaimana untuk Menjana Nombor Rawak Bukan Deterministik di Jawa Apabila Menggunakan Benih Tetap?

Barbara Streisand
Barbara Streisandasal
2024-11-11 10:18:03762semak imbas

How to Generate Non-Deterministic Random Numbers in Java When Using a Fixed Seed?

Menjana Nombor Rawak dengan Benih Tetap di Jawa

Apabila menjana nombor rawak menggunakan benih, adalah penting untuk memahami bagaimana benih mempengaruhi kerawak . Dengan menyediakan benih yang sama sebagai hujah kepada objek Rawak, urutan nombor yang dijana akan boleh dihasilkan semula dan deterministik. Ini adalah ciri yang diingini untuk ujian unit atau mereplikasi senario tertentu.

Kod yang disediakan menggunakan benih tetap untuk mencipta objek Rawak. Ini memastikan bahawa setiap kali 100 nombor dijana dengan benih yang sama, ia akan menjadi sama. Untuk membetulkannya dan menjana jujukan yang berbeza, pertimbangkan pendekatan berikut:

  1. Alih keluar Argumen Benih:
    Memanggil pembina argumen sifar Random, yang menggunakan masa nano semasa sebagai benih, membenarkan nilai benih yang berbeza dengan setiap seruan.
  2. Janakan Benih Rawak:
    Jika rawak sebenar adalah penting, gunakan sumber lain seperti UUID atau penjana nombor rawak selamat (cth., java.security.SecureRandom) untuk menjana benih secara dinamik.
  3. Simpan Contoh Rawak di Luar:
    Buat satu tika Rawak di luar kaedah dan gunakannya semula untuk menjana semua nombor rawak. Ini memastikan bahawa benih hanya ditetapkan sekali dan panggilan seterusnya ke randomGenerator() menggunakan benih yang sama.

Sebagai contoh, kod di bawah mengubah suai kod yang disediakan untuk melaksanakan pendekatan pertama:

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

Dengan mengalih keluar hujah benih, kod ini menjana jujukan nombor rawak yang berbeza dengan setiap seruan. Ingat bahawa rawak deterministik adalah penting untuk ujian dan konsistensi. Rawak sebenar mungkin diingini dalam sesetengah kes penggunaan, jadi pilih pendekatan yang paling sesuai dengan keperluan anda.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Nombor Rawak Bukan Deterministik di Jawa Apabila Menggunakan Benih Tetap?. 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