2013-05-20 15 views
25

Domanda: Crea una 'lista' chiamato my_randoms di 10 numeri casuali tra 0 e 100.Python: numeri casuali in un elenco

Questo è quello che ho finora:

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

Purtroppo l'uscita di pitone is this:

[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] 

Genera i 10 numeri come se lo chiedessi ma lo genera uno alla volta. Che cosa sto facendo di sbagliato??

+15

Metti la tua stampa dopo il ciclo for ... piuttosto che in esso. – NominSim

+0

In realtà, stai generando i numeri uno alla volta, ma il tuo codice originale ti ha stampato i valori ogni volta che ne viene generato uno. Le soluzioni di seguito che parlano dell'istruzione di stampa semplicemente attendono e stampano l'elenco dopo che tutti i numeri sono stati generati. –

risposta

12

Fissare il rientro della print dichiarazione

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

Si potrebbe utilizzare random.sample per generare l'elenco con una chiamata:

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

che genera numeri della (compreso) vanno da Da 0 a 99. Se vuoi da 1 a 100, puoi usare questo (grazie a @martineau per indicare la mia soluzione contorta):

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

L'esempio non includerà valori duplicati, che possono o meno importare in questo caso d'uso, ma vale la pena notare –

+0

@JonClements che sei assolutamente corretto, grazie per aver notato! :) – robertklep

+1

Per valori nell'intervallo 1..100 sarebbe più semplice usare 'random.sample (xrange (1, 101), 10)' di una list comprehension. – 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

Grazie per la risposta. Una breve spiegazione su ciò che stava facendo di sbagliato, come richiesto, sarebbe grandiosa. – yakobom

-3
my_randoms = [randint(n1,n2) for x in range(listsize)]