Paso 12: El getRandom método
Este método es realmente la carne de la función de sugerencia de episodio al azar del programa.
En primer lugar, el programa comprueba para asegurarse de que está marcada la casilla de verificación que al menos una temporada. Si esta verificación no estaba en el lugar, el programa intentará generar aleatoriamente episodios indefinidamente porque ninguno de los episodios generados coincidirá con una marcada temporada (porque hay no hay estaciones marcadas). Si no se comprueban estaciones, getRandom imprime una advertencia para el usuario y devuelve la matriz {1,1}, que corresponde al piloto.
Si se comprueba por lo menos una temporada, getRandom pasa a generar una sugerencia aleatoria. Un array de int se crea una instancia para mantener la sugerencia, y se define una variable booleana "hasValidSuggestion" indicar si la sugerencia llevó a cabo en "sugerencia" es válido (no ha recientemente sugerido).
La forma en el tiempo bucle sección trabajos son: getRandom generará nuevas sugerencias del episodio hasta que uno de los dos casos se cumple: la sugerencia generada no ha sugerido recientemente y por lo tanto es válida (el valor de "hasValidSuggestion" en true) o se han generado 1000 episodios aleatorios sin una sugerencia válida ocurriendo, lo que indica que todos los posibles episodios en las temporadas seleccionadas ya han sido seleccionados. Si eres curioso acerca de por qué elegí 1000 veces, deja un comentario y yo mismo explico allí. :)
Después el tiempo bucle, primero reviso ver si el tiempo del lazo fue detenido porque "cuenta" llegó a 1000 antes de que se generó una propuesta válida. Aprovecho esto para significar que se han sugerido todos los episodios en las temporadas seleccionados y el usuario debe seleccionar otras temporadas o reajustar la lista de "vista". En este caso, la propuesta se establece en el piloto y se imprime una advertencia para que el usuario tener en cuenta antes de proceder.
Por último, si el "if(count == 1000)" no se cumple condición, entonces el tiempo lazo fue detenido porque se generó una propuesta válida. getRandom llama al método markSuggested para marcar en la matriz "vista" que este episodio particular ya se ha sugerido y devuelve la sugerencia para la exhibición.