2010-08-24 18 views
16

¿Cómo generar una lista aleatoria (pero única y ordenada) de una longitud dada determinada fuera de los números de un rango dado en Python?¿Cómo generar una lista aleatoria de longitud fija de valores del rango dado?

Algo así:

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

¿Con o sin duplicación? (es decir, ¿está permitido '' [1,4,7,1] 'como salida?) – kennytm

Respuesta

34

Una muestra aleatoria como esta devuelve una lista de elementos únicos de secuencia. No confundas esto con enteros aleatorios en el rango.

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

'random.sample' devuelve una lista de elementos * únicos * de secuencia. – phadej

+0

¡Gracias! Agregaría asignar el resultado a una variable y hacer que vary.sort() en él coincida con el ejemplo anterior, pero no lo solicité explícitamente, por lo tanto, su solución es la mejor. – user63503

8

Una combinación de random.randrange y la lista por comprensión funcionaría.

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

Debería considerar usar la variable _ (guión bajo) en lugar de contar. – Soravux

+0

@Soravux: De acuerdo. Cambiado Gracias. –

+2

¿Por qué es mejor usar el _ (guión bajo)? – Norfeldt

Cuestiones relacionadas