2011-11-23 49 views
29

Có thể trùng lặp:
Java: generating random number in a rangeNhận số nguyên ngẫu nhiên trong phạm vi (x, y]

Làm thế nào để tạo ra một số nguyên ngẫu nhiên i, chẳng hạn rằng i thuộc về (0,10]

?

Tôi đã cố gắng sử dụng điều này:

Random generator = new Random(); 
int i = generator.nextInt(10); 

nhưng nó mang lại cho tôi giá trị giữa [0,10).

Nhưng trong trường hợp của tôi, tôi cần chúng là (0,10].

Trả lời

75
Random generator = new Random(); 
int i = generator.nextInt(10) + 1; 
+0

Điều này tạo ra các số nguyên trong phạm vi [1, 11). –

+23

... mà, bây giờ mà tôi nhận ra chúng ta đang nói về số nguyên, là như nhau :) –

+0

Vâng, thêm "1" giải quyết vấn đề cho chắc chắn, nhưng tôi chỉ không thể hiểu TẠI SAO phương pháp này không xử lý hai đối số - bắt đầu và dừng phạm vi ?! – thorinkor

13

Làm thế nào về:

Random generator = new Random(); 
int i = 10 - generator.nextInt(10); 
+0

Thông minh, nhưng loại ngớ ngẩn. – drdwilcox

+2

+1 1/2 cho sự thông minh và -1/2 cho sự ngớ ngẩn. –

+1

Có, chắc chắn là không thích hợp. Tôi đã suy nghĩ ban đầu về số thực, nhưng ít nhất nó vẫn hoạt động cho các số nguyên! :) –

5

Chỉ cần thêm một đến kết quả. Điều đó biến [0, 10) thành (0,10] (đối với số nguyên). [0, 10) chỉ là một cách khó hiểu hơn [0, 9], và (0,10] là [1,10] (cho số nguyên)

+0

Vâng, thêm "1" giải quyết vấn đề cho chắc chắn, nhưng tôi chỉ không thể hiểu TẠI SAO phương pháp này không xử lý hai đối số - bắt đầu và dừng lại của phạm vi ?! – thorinkor

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