2013-05-20 37 views
25

Câu hỏi: Tạo một 'danh sách' gọi my_randoms 10 số ngẫu nhiên giữa 0 và 100.Python: Số Ngẫu nhiên vào một danh sách

Đây là những gì tôi có cho đến nay:

import random  
my_randoms=[]  
for i in range (10):  
    my_randoms.append(random.randrange(1,101,1))  
    print (my_randoms)   

Đáng tiếc là đầu ra của python là:

[34] 
[34, 30] 
[34, 30, 75] 
[34, 30, 75, 27] 
[34, 30, 75, 27, 8] 
[34, 30, 75, 27, 8, 58] 
[34, 30, 75, 27, 8, 58, 10] 
[34, 30, 75, 27, 8, 58, 10, 1] 
[34, 30, 75, 27, 8, 58, 10, 1, 59] 
[34, 30, 75, 27, 8, 58, 10, 1, 59, 25] 

Nó tạo 10 số giống như tôi yêu cầu nhưng tạo mỗi lần một số. Tôi đang làm gì sai ??

+15

Đặt in của bạn sau khi vòng lặp for ... chứ không phải là ở trong đó. – NominSim

+0

Trên thực tế, bạn đang tạo ra các số một tại một thời điểm, nhưng mã ban đầu của bạn có bạn in các giá trị mỗi khi một được tạo ra. Các giải pháp bên dưới nói về lệnh in chỉ cần đợi và in danh sách sau khi tất cả các số được tạo. –

Trả lời

12

Vá thụt đầu dòng của báo cáo kết quả print

import random 

my_randoms=[] 

for i in range (10): 

    my_randoms.append(random.randrange(1,101,1)) 

print (my_randoms) 
29
import random 
my_randoms=[random.randrange(1,101,1) for _ in range (10)] 
53

Bạn có thể sử dụng random.sample để tạo danh sách với một cuộc gọi:

import random 
my_randoms = random.sample(xrange(100), 10) 

Đó tạo số trong (bao gồm) dao động từ 0 đến 99. Nếu bạn muốn 1 đến 100, bạn có thể sử dụng điều này (nhờ @martineau để chỉ ra giải pháp phức tạp của tôi):

my_randoms = random.sample(xrange(1, 101), 10) 
+24

Mẫu sẽ không bao gồm các giá trị trùng lặp, có thể hoặc không quan trọng trong trường hợp sử dụng này, nhưng đáng chú ý là –

+0

@JonClements bạn hoàn toàn chính xác, cảm ơn bạn đã lưu ý! :) – robertklep

+1

Đối với các giá trị trong phạm vi 1,.100, việc sử dụng 'random.sample (xrange (1, 101), 10)' đơn giản hơn là một danh sách hiểu. – martineau

1
import random 

a=[] 
n=int(input("Enter number of elements:")) 

for j in range(n): 
     a.append(random.randint(1,20)) 

print('Randomised list is: ',a) 
+2

Cảm ơn câu trả lời của bạn. Một lời giải thích ngắn gọn về những gì ông đã làm sai, theo yêu cầu, sẽ là tuyệt vời. – yakobom

-3
my_randoms = [randint(n1,n2) for x in range(listsize)] 
Các vấn đề liên quan