juego monty hall

tengo el metodo cogruencial, a el cual contiene el juego de monty hall, este pide que ingrese el numero de juegos. pero no me imprime el ganador.

public int congruencial(){
int Xn = 111, Xi, A = 78, B = 45, N = 7, i = 0;
float r;
float temp = 0;
float[] arreglo = new float[10];
for (int j = 0; j < 10; j++) {
Random aleatorio = new Random();
Xn = aleatorio.nextInt(101);
Xi = (A * Xn + B) % N;
r = (float)Xi/(float)N;
arreglo[i] = r;
temp = temp + r;
Xn = (int)Xi;

i = (int)r;
}
return i;
}

public void monty_Hall() {
Scanner leer = new Scanner(System.in);
float r = congruencial() * 1000;
int juegos;
int i = 0, opcion;
int no_cambio = 0, si_cambio = 0, puerta_elegida;
int puerta_restante, puerta_revelada, puerta_ganadora;

System.out.print("ingresa el numero de juegos: ");
juegos = leer.nextInt(i);
while (i < juegos)
{
puerta_elegida = congruencial() % 3 +1;
puerta_ganadora = congruencial() % 3+1;
do
{
puerta_revelada = congruencial() % 3 + 1;
}while(puerta_revelada == puerta_elegida || puerta_revelada == puerta_ganadora);
do
{
puerta_restante = congruencial() % 3 + 1;
} while (puerta_restante == puerta_elegida || puerta_restante == puerta_revelada);
opcion = congruencial() % 2 + 1;
if (opcion == 1)
{
if (puerta_elegida == puerta_ganadora) {
no_cambio++;
}
}
if (opcion == 2) {
puerta_elegida = puerta_restante;
if (puerta_elegida == puerta_ganadora) {
si_cambio++;
}
}
i++;

}

System.out.println("el competidor gano al no cambiar con numero de: " + no_cambio);
System.out.println("el competidor gano al cambiar con numero de: " + si_cambio);
}