Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Mesmo aluno matriculado mais de uma vez em um curso

Olá,

Na aula 3 temos o seguinte código para "matricular" os alunos em seus cursos:

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)

Como o choice() é chamado "matriculas"-vezes por causa do range(), isso não pode fazer com que um aluno seja matriculado mais de uma vez em um mesmo curso?

Cada vez que o choice() é executado ele retorna um valor aleatório de cursos.index, mas ele não mantém nenhum histórico se o curso já foi escolhido anteriormente.

Qual seria uma solução para esse problema?

Eu pensei em usar permutation() e pegar os primeiros "matriculas" elementos da lista que ele retorna:

for _, row in nomes.iterrows():
  id_aluno = row.id_aluno
  n_matriculas = row.matriculas
  lista_cursos = np.random.permutation(cursos.index)[0:n_matriculas]
  for curso_id in lista_cursos:
    mat = [id_aluno, curso_id]
    todas_matriculas.append(mat)

Obrigado

1 resposta
solução!

Boa tarde Fabio, tudo bem com você?

Muito bem, você tem razão. O algoritmo feito pelo instrutor Guilherme pode matricular um mesmo aluno várias vezes no mesmo curso. Como o Guilherme está mais interessado em gerar uma base de dados para trabalhar o conteúdo do curso, ele não se preocupou em fazer esse tipo de validação, mas a sua preocupação é bastante pertinente.

Interessante ressaltar o seu uso de funções que já estão prontas, como o caso da permutation, o que evita a elaboração de um código manual que fosse mais robusto e até menos eficiente.

Obrigada por compartilhar a sua sugestão conosco, certamente será útil para outros alunos.

Abraço e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software