web-dev-qa-db-ja.com

交換用のランダムサンプルを取得する

私はこのリストを持っています:

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

そして、それから4つのランダムな文字を取得したいですが、繰り返しを含みます。

これを実行すると、4つの一意の文字だけが返されますが、繰り返し文字が返されることはありません。

print(random.sample(colors,4))

文字の繰り返しが可能な4色のリストを取得するにはどうすればよいですか?

24
kev xlre

Python 3.6、新しい random.choices() 関数は問題に対処します直接:

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

random.choice

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

必要な値の数がリスト内の値の数に対応していない場合は、rangeを使用します。

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

Python 3.6以降では、 random.choices (複数)および必要な値の数をk引数として指定します。

18
trincot

numpy.random.choiceドキュメントnumpy-v1.1 ):

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

このコードは、必要な結果を生成します。あなたと他のユーザーがプロセスに従うのを助けるために、各行にコメントを追加しました。ご質問はお気軽にどうぞ。

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