2012-12-05 25 views

Trả lời

27

Nếu bạn muốn nhiều dựa giá trị lâu sau đó thực hiện dưới đây:

long LOWER_RANGE = 0; //assign lower range value 
long UPPER_RANGE = 1000000; //assign upper range value 
Random random = new Random(); 


long randomValue = LOWER_RANGE + 
          (long)(random.nextDouble()*(UPPER_RANGE - LOWER_RANGE)); 
+1

+1 Cần lưu ý rằng Random sử dụng hạt giống 48 bit để nó không tạo ra 'double' hoặc' long' có thể có. SecureRandom chậm nhưng sẽ tạo ra tất cả các giá trị có thể. –

+3

Tại sao bạn không sử dụng nextLong()? –

1

Bạn có thể sử dụng để tạo ra nextInt ints cao hơn và thấp hơn của lâu. Thậm chí có thể mở rộng lớp Random với phương thức nextLong của riêng bạn (mặc dù bố cục có thể là lựa chọn an toàn hơn cho lập trình nghiêm túc hơn).

Hãy xem Javadoc của nextInt (int n). Một phương thức nextLong có thể được thực hiện bằng cách sử dụng cùng một thuật toán. Làm cho nó đúng có thể chứng minh một chút khó khăn. Chuẩn bị làm toán bằng bút và giấy. Sử dụng một thư viện đã được chứng minh là khôn ngoan nếu bạn không chỉ viết mã cho vui.

+0

Điều này không chính xác; nó sẽ trả về giá trị lớn hơn n nhân dịp. –

+0

@StefanReich True. Các bit thấp của n sẽ bị bỏ qua. Tôi sẽ chỉnh sửa câu trả lời. –

+0

@StefanReich Tôi đã xóa ví dụ xấu. –

Các vấn đề liên quan