2010-08-24 24 views
16

Làm thế nào để tạo ra một danh sách ngẫu nhiên (nhưng duy nhất và được sắp xếp) của một độ dài cố định trong số các số của một phạm vi nhất định bằng Python?Làm cách nào để tạo danh sách ngẫu nhiên độ dài cố định của các giá trị từ phạm vi nhất định?

Something như thế:

>>> list_length = 4 
>>> values_range = [1, 30] 
>>> random_list(list_length, values_range) 

[1, 6, 17, 29] 

>>> random_list(list_length, values_range) 

[5, 6, 22, 24] 

>>> random_list(3, [0, 11]) 

[0, 7, 10] 
+3

Có hoặc không có trùng lặp? (tức là '[1,4,7,1] 'được phép là đầu ra?) – kennytm

Trả lời

34

Một mẫu ngẫu nhiên như thế này trả về danh sách các mục duy nhất của chuỗi. Đừng nhầm lẫn điều này với các số nguyên ngẫu nhiên trong phạm vi.

>>> import random 
>>> random.sample(range(30), 4) 
[3, 1, 21, 19] 
+6

'random.sample' trả về danh sách các mục * duy nhất của chuỗi. – phadej

+0

Cảm ơn bạn! Tôi muốn thêm kết quả gán vào một biến và thực hiện variable.sort() trên nó để khớp với ví dụ ở trên, nhưng tôi không yêu cầu nó một cách rõ ràng, vì vậy, giải pháp của bạn là tốt nhất. – user63503

8

Một sự kết hợp của random.randrange và danh sách hiểu biết sẽ làm việc.

import random 
[random.randrange(1, 10) for _ in range(0, 4)] 
+0

Bạn nên cân nhắc sử dụng biến _ (gạch dưới) thay vì đếm. – Soravux

+0

@Soravux: Đồng ý. Đã thay đổi. Cảm ơn. –

+2

Tại sao tốt hơn nên sử dụng _ (gạch dưới)? – Norfeldt

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