Rumah > Java > javaTutorial > Mengapakah penjana nombor rawak Java saya mengembalikan nombor yang sama apabila dipanggil dari kelas lain?

Mengapakah penjana nombor rawak Java saya mengembalikan nombor yang sama apabila dipanggil dari kelas lain?

DDD
Lepaskan: 2024-11-07 04:54:02
asal
965 orang telah melayarinya

Why does my Java random number generator return the same number when called from another class?

Penjana Nombor Rawak Java dengan Benih Tetap

Soalan:

Di Java, apabila menetapkan benih untuk penjana nombor rawak, mengapa ia sentiasa mengembalikan nombor yang sama apabila saya memanggil kaedah dari kelas lain?

Kod:

public class Numbers {
    public int random(int i) {
        Random randnum = new Random();
        randnum.setSeed(123456789);
        return randnum.nextInt(i);
    }
}
Salin selepas log masuk

Apabila memanggil numbers.random(10) beberapa kali, ia secara konsisten menghasilkan nilai yang sama. Bagaimanakah kita boleh mengubah suai kod untuk menghasilkan nombor rawak yang berbeza sambil mengekalkan keperluan untuk menetapkan benih?

Jawapan:

Untuk memastikan nombor rawak yang berbeza dijana, Contoh rawak mesti dikongsi di seluruh kelas dan bukannya dicipta semula untuk setiap panggilan kaedah. Ini boleh dicapai melalui pengubahsuaian berikut:

public class Numbers {
    private Random randnum;  // Declare the Random instance as a class variable

    public Numbers() {
        randnum = new Random();
        randnum.setSeed(123456789);
    }

    public int random(int i) {
        return randnum.nextInt(i);
    }
}
Salin selepas log masuk

Dengan memulakan tika randnum dalam pembina kelas dan menjadikannya boleh diakses melalui kaedah kelas, kami memastikan objek Rawak yang sama digunakan di seluruh kelas, mendahului kepada nombor rawak berbeza yang dijana dengan setiap panggilan kaedah.

Atas ialah kandungan terperinci Mengapakah penjana nombor rawak Java saya mengembalikan nombor yang sama apabila dipanggil dari kelas lain?. 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