¡Hola Cristian!
Para evitar que un mismo alumno se matricule en un curso más de una vez, puedes utilizar un diccionario para llevar un registro de los cursos en los que se ha matriculado cada alumno. De esta manera, antes de agregar una nueva matrícula al registro, puedes verificar si el alumno ya se ha matriculado en ese curso.
Aquí te muestro un ejemplo de cómo podrías modificar tu código para lograr esto:
registro = {} # Diccionario para llevar registro de matrículas por alumno
for index, row in nombres.iterrows():
id = row.id_alumno
matriculas = row.matriculas
for i in range(matriculas):
curso = np.random.choice(cursos.index, p = prob)
if id in registro and curso in registro[id]:
# Si el alumno ya se ha matriculado en ese curso, no hacemos nada
continue
mat = [id, curso]
todas_matriculas.append(mat)
if id not in registro:
registro[id] = set()
registro[id].add(curso)
En este ejemplo, utilizamos un diccionario llamado "registro" para llevar un registro de los cursos en los que se ha matriculado cada alumno. La clave del diccionario es el ID del alumno y el valor es un conjunto de los cursos en los que se ha matriculado.
Antes de agregar una nueva matrícula al registro, verificamos si el alumno ya se ha matriculado en ese curso utilizando la sintaxis "if id in registro and curso in registro[id]". Si el alumno ya se ha matriculado en ese curso, simplemente continuamos con la siguiente iteración del ciclo for. Si el alumno no se ha matriculado en ese curso, agregamos la matrícula al registro y actualizamos el conjunto de cursos del alumno.
Espero que esta solución te sea de ayuda. ¡Buenos estudios!
Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios! :)