Rumah >Java >javaTutorial >Mengapa Nombor Rawak Saya di Jawa Nampaknya Sama Setiap Kali?

Mengapa Nombor Rawak Saya di Jawa Nampaknya Sama Setiap Kali?

Patricia Arquette
Patricia Arquetteasal
2024-11-09 13:41:02966semak imbas

Why Do My Random Numbers in Java Seem to Be the Same Every Time?

Memahami Nombor Rawak Menggunakan Benih dalam Java

Di Jawa, benih digunakan untuk memulakan kejadian Rawak dan menjana jujukan nombor pseudorandom . Apabila benih yang sama disediakan, kejadian Rawak menghasilkan urutan nombor yang sama.

Mengapa Nombor Rawak Saya Sama Setiap Masa?

Dalam kod yang disediakan:

double num = generator.nextDouble() * (0.5);

Anda menggunakan benih yang sama untuk setiap panggilan ke randomGenerator, menghasilkan urutan rawak yang sama nombor.

Cara Membaikinya

Untuk menjana jujukan nombor rawak yang berbeza dengan biji:

  1. Gunakan Benih Berbeza : Sediakan benih yang berbeza sebagai hujah kepada pembina Rawak setiap kali anda memanggil randomGenerator. Ini akan mencipta berbilang kejadian Rawak, setiap satu dengan benih unik.
  2. Gunakan Benih Lalai: Jika anda ingin menggunakan benih yang sama merentas berbilang panggilan, mulakan satu tika Rawak di luar kaedah randomGenerator dengan pembina hujah sifar, yang menggunakan masa semasa sebagai benih.

Contoh:

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

Penjanaan Nombor Rawak Pseudo

Penjana nombor pseudorandom (PRNG) menjana jujukan yang kelihatan rawak tetapi bersifat deterministik dan disemai dengan nilai awal. Apabila benih yang sama digunakan, PRNG menghasilkan urutan yang sama.

Atas ialah kandungan terperinci Mengapa Nombor Rawak Saya di Jawa Nampaknya Sama Setiap Kali?. 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