トランプの山から複数人に複数枚のカードを配布しよう
前回はトランプを模した52個の要素を持つ配列から、要素が重複しないように選択しました。
今回は複数人に対して複数の要素を重複しないように選択してみましょう。
配列から複数人に複数の要素を重複なしで選択するプログラム
random.choice()の第2引数を結果が二次元配列になるように指定して、配列の要素を取得します。
第3引数をFalseにすることで、要素を重複なしにしています。
14行目のenumerate()を使うことで、リストのインデックスを取得しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
### インポート import numpy as np ### カード配列 CARD = ['CA','C2','C3','C4','C5','C6','C7','C8','C9','CT','CJ','CQ','CK', 'DA','D2','D3','D4','D5','D6','D7','D8','D9','DT','DJ','DQ','DK', 'HA','H2','H3','H4','H5','H6','H7','H8','H9','HT','HJ','HQ','HK', 'SA','S2','S3','S4','S5','S6','S7','S8','S9','ST','SJ','SQ','SK'] ### カードをランダムで取得 cards = np.random.choice(CARD, [3,5], False) ### カード表示 for i,name in enumerate(['山田','鈴木','佐藤']): print(name, cards[i]) |
プログラムを実行すると、以下のようにそれぞれ5個の要素を重複なしで選択されます。
実行例
C:\>python card2-1.py
山田 ['D8' 'DQ' 'H5' 'HJ' 'S5']
鈴木 ['C4' 'D5' 'D9' 'H2' 'S3']
佐藤 ['C9' 'CK' 'H3' 'HA' 'S8']