1. Si no me equivoco y no han cambiado su comportamiento, Math.random() arroja un número pseudo-aleatorio entre 0 y 0.99999999... , entonces nada mas tienes que multiplicar ese número por el rango de números que quieres tener mas uno, por ejemplo, un aleatorio entre 0 y 5 lo calculas:
int aleatorio
= (int)Math.
floor(Math.
random() * 6); // Obtiene números de 0 a 5
Como quieres un número entre 4 a 7, nada más suma 4 a un aleatorio entre 0 y 3 y eso es todo.
2. No entendí, supongo que quieres obtener la posición
n - x de un array, donde
n es el tamaño del array y
x es la posición que quieres obtener de adelante hacia atrás.
y 3.
Si ya creaste un hilo para este problema, por qué creaste otro para el mismo problema ??