Eu não entendi muito bem como funciona o parâmetro p no choice(). Na documentação oficial está escrito o seguinte: 'The probabilities associated with each entry in a. If not given the sample assumes a uniform distribution over all entries in a.'
Significa que se eu passar uma lista com as probabilidades de cada elemento sair, todos eles eles terão chances distintas serem escolhidos? E se eu não passar nada, o que seria o valor Default, todos eles teriam a mesma chance?
Por exemplo, veja o código abaixo em que eu passei uma lista com as probabilidades:
>>> import numpy as np
>>> a = [14, 78, 23, 41, 44]
>>> np.random.choice(a, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([23, 41, 41])
>>> np.random.choice(a, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([41, 23, 41])
np.random.choice(a, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([14, 23, 41])
Pelo que entendi, para os cinco elementos de (a) as probabilidades são: [14 = 0.1; 78 = 0; 23 = 0.3; 41 = 0.6; 44 = 0], e como para os números 78 e 44 as probabilidades são zero eles nunca irão aparecer, isto está correto?
Por fim, eu fiz o meu código sem passar o parâmetro p, ficou da seguinte maneira:
todas_matriculas = []
for index, row in nomes.iterrows():
id = row.ID_alunos
matriculas = row.Matricula
for i in range(matriculas):
mat = [id, np.random.choice(cursos.index)]
todas_matriculas.append(mat)
matriculas = pd.DataFrame(todas_matriculas, columns = ['ID Aluno', 'ID Curso'])
matriculas
ID Aluno ID Curso
0 133 9
1 310 12
2 310 2
3 310 15
4 310 7
... ... ...
815 193 13
816 193 7
817 118 18
818 48 18
819 173 4
820 rows × 2 columns
Ou seja, a única diferença entre o meu código e o do instrutor será que para os vinte cursos existentes, cada curso vai ter a mesma probabilidade de ser escolhido para cada matrícula?