List=[a,b,c,d,e] というリストがあり、この要素を各20回ずつ計100回ランダムに表示したいのですが方法が分かりません。
ご享受よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
list.remove(a)
で一致する要素を削除しつつ要素を返してくれるので、
list=[a,a,a,a,,,,,a,a,a,b,b,b,b,,,,,,b,b,b,b,,,,,e,e,e,e,e]
のように各20個ずつ入った配列を用意して
python
1import random 2 3while list.count>0: 4 print(list.remove(random.choice(list))
のようにすれば良いかと。
リストの要素をランダムに選択しつつ、選択された要素をリストから削除してます。
ほぼ素人の考えなのでもっと良いやり方があるかもですが。
投稿2019/09/02 08:41
総合スコア28
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/02 09:19
2019/09/02 12:37

0
numpy.random.choice をお使いください。
例えば、重複ありで指定したリストから20個取り出す場合は np.random.choice(["a", "b", "c", "d", "e"], 20) とします。
コード
python
1import numpy as np 2 3lst = ["a", "b", "c", "d", "e"] 4 5for i in range(100): 6 print(np.random.choice(lst, 20))
['d' 'e' 'c' 'c' 'b' 'a' 'e' 'e' 'e' 'b' 'e' 'e' 'e' 'c' 'a' 'b' 'a' 'e' 'a' 'b'] ['e' 'c' 'd' 'b' 'a' 'b' 'e' 'd' 'd' 'e' 'a' 'e' 'b' 'e' 'e' 'c' 'a' 'd' 'a' 'c'] ['e' 'a' 'd' 'b' 'a' 'd' 'a' 'c' 'b' 'a' 'b' 'c' 'c' 'b' 'e' 'd' 'e' 'c' 'd' 'e'] ['b' 'b' 'e' 'a' 'a' 'c' 'c' 'c' 'c' 'c' 'd' 'a' 'c' 'c' 'c' 'e' 'd' 'd' 'b' 'a'] ...
標準ライブラリのみでやる場合
python
1import random 2 3lst = ["a", "b", "c", "d", "e"] 4 5for i in range(100): 6 print(random.choices(lst, k=20))
参考文献
投稿2019/09/02 08:37
編集2019/09/02 08:40総合スコア21960
0
ベストアンサー
List=[a,b,c]を各2回、計6回ランダムに表示させるというのは a,c,b,c,a,bや、 b,a,b,c,a,cということです。
なるほど。それでしたら List*20
をシャッフルして使えば良いでしょう。
シャッフルにはrandom.shuffleを使えます。
投稿2019/09/02 08:35
編集2019/09/02 08:44総合スコア35676
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。