2010-08-24 5 views
16

Comment générer une liste aléatoire (mais unique et triée) d'une longueur donnée fixe de nombres d'une plage donnée en Python?Comment générer une liste aléatoire de longueur fixe de valeurs à partir d'une plage donnée?

Quelque chose comme ça:

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

Avec ou sans duplication? (c'est-à-dire que '[1,4,7,1]' est autorisé en sortie?) – kennytm

Répondre

34

Un échantillon aléatoire comme celui-ci renvoie la liste des éléments uniques de la séquence. Ne pas confondre avec des entiers aléatoires dans la gamme.

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

'random.sample' renvoie la liste des éléments * uniques * de la séquence. – phadej

+0

Merci! J'ajouterais l'assignation d'un résultat à une variable et j'utiliserais variable.sort() pour l'adapter à l'exemple ci-dessus, mais je ne l'ai pas demandé explicitement, donc, votre solution est la meilleure. – user63503

8

Une combinaison de compréhension random.randrange et la liste fonctionnerait.

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

Vous devriez envisager d'utiliser la variable _ (underscore) au lieu de count. – Soravux

+0

@Soravux: D'accord. Modifié. Merci. –

+2

Pourquoi est-il préférable d'utiliser le _ (trait de soulignement)? – Norfeldt

Questions connexes