Krijg een willekeurig monster met vervanging

Ik heb deze lijst:

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

en ik wil er 4 willekeurige letters van krijgen, maar inclusief herhaling.

Rennen Dit geeft me slechts 4 unieke letters, maar nooit een herhalende letters:

print(random.sample(colors,4))

Hoe krijg ik een lijst met 4 kleuren, met het herhalen van brieven die mogelijk zijn?


Antwoord 1, Autoriteit 100%

In Python 3.6, de nieuwe willekeurige.choices () functie zal het probleem rechtstreeks aanspreken:

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

Antwoord 2, Autoriteit 36%

Met random.choice:

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

Als het aantal waarden dat u nodig hebt, niet overeenkomt met het aantal waarden in de lijst, gebruikt u vervolgens range:

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

Vanaf Python 3.6 Hierna kunt u ook random.choices(meervoud) en geef het aantal waarden op dat u nodig hebt als het K -argument.


Antwoord 3, Autoriteit 34%

Probeer numpy.random.choice(documentatie numpy-v1.13):

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

Antwoord 4

Deze code levert de gewenste resultaten op. Ik heb opmerkingen aan elke regel toegevoegd om u en andere gebruikers te helpen het proces te volgen. Stel gerust al je vragen.

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)

Other episodes