Obtenga una muestra aleatoria con reemplazo

1 minuto de lectura

avatar de usuario de kev xlre
kev xlre

tengo esta lista:

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

y quiero obtener 4 letras aleatorias de él, pero incluida la repetición.

Ejecutar esto solo me dará 4 letras únicas, pero nunca letras repetidas:

print(random.sample(colors,4))

¿Cómo obtengo una lista de 4 colores, con letras repetidas posibles?

  • Relacionado: Sin reemplazo (mantener orden: stackoverflow.com/questions/6482889/… ; sin mantener orden (normal): stackoverflow.com/questions/22741319/…, ponderado: stackoverflow.com/questions/43549515/…)

    – usuario202729

    30 de diciembre de 2021 a las 3:51

En Python 3.6, el nuevo elecciones aleatorias() función abordará el problema directamente:

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

avatar de usuario de trincot
trinquete

Con random.choice:

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

Si la cantidad de valores que necesita no corresponde a la cantidad de valores en la lista, entonces use range:

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

Desde Python 3.6 en adelante también puedes usar random.choices (plural) y especifique el número de valores que necesita como el k argumento.

Avatar de usuario de Priyank
Priyank

Intentar numpy.random.choice (documentación numpy-v1.13):

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

Este código producirá los resultados que necesita. He agregado comentarios a cada línea para ayudarlo a usted y a otros usuarios a seguir el proceso. Por favor, siéntase libre de hacer cualquier pregunta.

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)

¿Ha sido útil esta solución?