以下のようにして可能です。
- numpy.random.choice(アイテム一覧, 抽選回数, 確率一覧) で指定した確率に従い、100回抽選を行う
- numpy.unique(抽選結果, return_counts=True) で各アイテムの出現数を数える
numpy.random.choice — NumPy v1.15 Manual
numpy.unique — NumPy v1.19 Manual
python
1import numpy as np
2
3items = ["A", "B", "C", "D"] # アイテム一覧
4prob = [0.01, 0.05, 0.08, 0.86] # 確率一覧 (総和が1になっていること)
5N = 100 # 抽選回数
6
7# 抽選を行う
8result = np.random.choice(items, N, p=prob)
9print(result)
10# ['D' 'B' 'D' 'D' 'D' 'C' 'D' 'D' 'D' 'C' 'D' 'C' 'D' 'D' 'D' 'D' 'D' 'D'
11# 'D' 'D' 'D' 'B' 'D' 'D' 'C' 'D' 'C' 'D' 'D' 'D' 'C' 'B' 'D' 'D' 'D' 'D'
12# 'D' 'C' 'D' 'D' 'D' 'D' 'D' 'D' 'B' 'D' 'D' 'D' 'D' 'D' 'D' 'D' 'D' 'D'
13# 'D' 'D' 'D' 'B' 'D' 'D' 'C' 'D' 'D' 'D' 'D' 'D' 'D' 'D' 'D' 'D' 'D' 'D'
14# 'D' 'D' 'D' 'D' 'C' 'D' 'D' 'D' 'D' 'B' 'D' 'D' 'D' 'D' 'D' 'D' 'D' 'D'
15# 'D' 'D' 'D' 'D' 'D' 'D' 'D' 'C' 'D' 'D']
16
17# 集計する
18items, counts = np.unique(result, return_counts=True)
19
20for item, count in zip(items, counts):
21 print(item, count)
22# A 2
23# B 5
24# C 8
25# D 85
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/08 03:33