Hola Ernesto , espero que estés muy bien.
La idea que has propuesto es correcta en términos generales y se ajusta a la lógica que deseas implementar. Quieres garantizar que un alumno no se matricule más de una vez en el mismo curso. La solución que has planteado utilizando un buclewhile
que verifica si la matrícula ya existe en todas_matriculas
y, en caso afirmativo, genera una nueva matrícula, es una aproximación válida para lograr esto.
Te dejo una adptación de tu codigo
while True:
mat = [id, np.random.choice(cursos.index, p=prob)]
if mat in todas_matriculas:
continue # Si la matrícula ya existe, continúa el bucle
else:
todas_matriculas.append(mat)
break # Si la matrícula no existe, agrega la matrícula y sale del bucle
La modificación que hice es reemplazar next
con continue
y usar break
para salir del bucle cuando se encuentra una matrícula única. Esto es más claro y tiene el mismo efecto. Además, asegura que no se agreguen matrículas duplicadas a la lista todas_matriculas.
Ten en cuenta que esta solución puede llevar más tiempo si hay un número significativo de cursos o matrículas, ya que se realizarán más iteraciones del bucle en busca de matrículas únicas. Sin embargo, es una forma efectiva de garantizar que no haya duplicados en la lista de matrículas. Otra alternativa podría ser utilizar un enfoque de muestreo sin reemplazo si tienes acceso a una función de muestreo de datos en tu lenguaje de programación (por ejemplo, en Python, puedes usar random.sample). Esto garantizaría que no haya duplicados sin necesidad de un bucle de verificación.
Un saludo.
Si este post te ayudó, por favor,
marca como solucionado ✓. Continúa con tus estudios