web-dev-qa-db-fra.com

Obtenir un échantillon aléatoire avec remplacement

J'ai cette liste:

colors = ["R", "G", "B", "Y"]

et je veux en tirer 4 lettres au hasard, mais avec répétition.

Cela ne me donnera que 4 lettres uniques, mais jamais de lettres répétitives:

print(random.sample(colors,4))

Comment puis-je obtenir une liste de 4 couleurs, avec répétition possible des lettres?

16
kev xlre

Dans Python 3.6, la nouvelle fonction random.choices () traitera directement le problème:

>>> from random import choices
>>> colors = ["R", "G", "B", "Y"]
>>> choices(colors, k=4)
['G', 'R', 'G', 'Y']
20
Raymond Hettinger

Avec random.choice :

print([random.choice(colors) for _ in colors])

Si le nombre de valeurs dont vous avez besoin ne correspond pas au nombre de valeurs de la liste, utilisez range:

print([random.choice(colors) for _ in range(7)])

À partir de Python 3.6, vous pouvez également utiliser random.choices (pluriel) et spécifier le nombre de valeurs nécessaires en tant qu'argument k.

16
trincot

Essayez numpy.random.choice ( documentation numpy-v1.13 ): 

import numpy as np
n = 10 #size of the sample you want
print(np.random.choice(colors,n))
11
Priyank

Ce code produira les résultats dont vous avez besoin. J'ai ajouté des commentaires à chaque ligne pour vous aider, ainsi que les autres utilisateurs, à suivre le processus. N'hésitez pas à poser des questions.

import random

colours = ["R", "G", "B", "Y"]  # The list of colours to choose from
output_Colours = []             # A empty list to append results to
Number_Of_Letters = 4           # Allows the code to easily be updated

for i in range(Number_Of_Letters):  # A loop to repeat the generation of colour
    output_Colours.append(random.sample(colours,1)) # append and generate a colour from the list

print (output_Colours)
0
CodeCupboard