Buenas PatAs el programa funciona correctamente
Esta expresión
numeroAleatorio = (int)(rnd.nextDouble()*(numeroInicialRango-numeroFinalRango)+numeroFinalRango);
supongamos que tomamos inicial 1 y final 10.
Primero genera un decimal entre 0 y -9, luego le suma 10 y luego lo convierte a entero. Por ejemplo genera -3.2 y luego le suma 10, resulta 6.8 redondea a 7. Si genera 0, le suma 10, resulta 10. Si genera -9, le suma 10, resulta 1.
Aunque esto en principio funciona parece más fácil usar directamente el generador de enteros aleatorios en lugar de generar un decimal para luego convertirlo. Puede verse un ejemplo en
https://www.aprenderaprogramar.com/foros/index.php?topic=5681.0En ese ejemplo podemos ver también un diseño digamos que mejor orientado a objetos por cuanto usa distintas clases, cada una con sus responsabilidades
Salu2