Hạt giống cụ thể sẽ luôn cung cấp cùng một chuỗi số "ngẫu nhiên". Vì vậy, chỉ có 2^64 trình tự khác nhau trong Random! Bên cạnh đó setSeed
cũng có thể sử dụng một hàm tạo với một hạt giống. Khi không sử dụng hạt giống sử dụng đồng hồ của máy tính để chọn hạt nhân thực sự ngẫu nhiên.
Vì vậy, trong trường hợp thông thường không sử dụng hạt giống cụ thể, hàm tạo Random()
và khôngsetSeed
. Đặc biệt là hạn chế setSeed(System.currentTimeMillis())
.
Để gỡ lỗi phụ thuộc vào dữ liệu, nơi bạn muốn lặp lại cùng một dữ liệu giả ngẫu nhiên, hãy sử dụng một hạt giống cụ thể.
Không cần phải lo lắng liệu chuỗi hạt giống/chuỗi cụ thể có thể được nhận diện hay không và các con số tiếp theo được dự đoán, vì phạm vi lớn của hạt giống.
Hàm tạo mặc định sử dụng System.nanoTime()
(bị xáo trộn một cách thích hợp), là hàm OS chi phí, khi nói về hàng nghìn new Random()
.
Nguồn
2013-07-10 08:33:17
Ồ - và ngoài ra, bạn có thể đặt hạt giống ngẫu nhiên thành thứ gì đó thật sự ngẫu nhiên - như thể bạn có bộ đếm geiger nằm xung quanh. Bạn có thể đặt hạt giống mỗi giây hoặc thường xuyên, bạn có thể đo nguồn ngẫu nhiên thực sự của bạn, sau đó lặp lại nó cho đến khi bạn có thể đặt lại nó. – Owen
cảm ơn rất nhiều Owen !! – nilashan