10000000 + (int)(Math.random() * ((99999999 - 10000000) + 1));
// ou
new Random().nextInt(99999999 - 10000000 + 1) + 10000000;
// ou, de uma forma genérica:
new Random().nextInt(max - min + 1) + min;
// max = 99999999
(int)Math.random()*99999999
Se necessitas de ter exactamente o número de dígitos que indicaste, então o método standard é utilizares algo do género:
Código:10000000 + (int)(Math.random() * ((99999999 - 10000000) + 1)); // ou new Random().nextInt(99999999 - 10000000 + 1) + 10000000; // ou, de uma forma genérica: new Random().nextInt(max - min + 1) + min; // max = 99999999
int i = (int)(Math.random() * (99999999 + 1));
Sim, podes fazer essa atribuição. No entanto, esse código tem um problema uma vez que não te permite obter o número 99999999 (devido ao limite superior do método random ser exclusivo). Para corrigires, precisas de utilizar o seguinte:
Código:int i = (int)(Math.random() * (99999999 + 1));