Fala galera, tudo bem?
Eu não entendi muito bem o termo p da função np.random.choice().
Li a documentação:
p: 1-D array-like, optional
The probabilities associated with each entry in a. If not given the sample asumes a uniform distribution over all entries in a.
Ou seja, eu crio um array que define a probabilidade de escolher cada curso? É isso mesmo? Pois se eu não informo, ele vai distribuir os valores de forma uniforme, ou seja, terá o mesmo número de cursos para todos?
prob:
todas_matriculas = []
x = np.random.rand(20)
prob = x / sum(x)
prob
array([0.03444168, 0.06983424, 0.04421015, 0.05731322, 0.05498633,
0.01830839, 0.01049315, 0.08150745, 0.06868354, 0.02371343,
0.05623134, 0.105889 , 0.07483705, 0.04964209, 0.03040911,
0.04675813, 0.05078491, 0.01570861, 0.04635523, 0.05989293])
E executo:
for index, row in nomes.iterrows():
id = row.id_aluno
matriculas = row.matriculas
for i in range(matriculas):
mat = [id, np.random.choice(cursos.index,p = prob)]
todas_matriculas.append(mat)
matriculas = pd.DataFrame(todas_matriculas, columns= ['id_aluno','id_curso'])