Получить случайную выборку с заменой
У меня есть этот список:
colors = ["R", "G", "B", "Y"]
и я хочу получить от него 4 случайных письма, но включая повторение.
Выполнение этого даст только четыре уникальных письма, но никогда не повторяющихся писем:
print(random.sample(colors,4))
Как получить список из 4 цветов, с повторяющимися буквами?
Ответы
Ответ 1
С random.choice
:
print([random.choice(colors) for _ in colors])
Если количество требуемых значений не соответствует количеству значений в списке, используйте range
:
print([random.choice(colors) for _ in range(7)])
Начиная с random.choices
Python 3.6 вы также можете использовать random.choices
(множественное число) и указать количество необходимых вам значений в качестве аргумента k.
Ответ 2
В Python 3.6 новая функция random.choices() будет решать проблему напрямую:
>>> from random import choices
>>> colors = ["R", "G", "B", "Y"]
>>> choices(colors, k=4)
['G', 'R', 'G', 'Y']
Ответ 3
Попробуйте numpy.random.choice
(документация numpy-v1.13):
import numpy as np
n = 10 #size of the sample you want
print(np.random.choice(colors,n))
Ответ 4
Этот код даст требуемые результаты. Я добавил комментарии к каждой строке, чтобы помочь вам и другим пользователям следовать этому процессу. Пожалуйста, не стесняйтесь задавать любые вопросы.
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)