Gerar numero aleatorio com tamanho fixo?

Salve galera

Seguinte, estou usando a Math.random() pra gerar numeros aleatorios, mas preciso q os numeros gerados tenham sempre 13 length().

Estou tentando assim.

public class GeraNumerosAleatorios {    
    private Long numero;
    
    public GeraNumerosAleatorios(Long n){
        numero = n;
    }
    
    public Long getNumeroAleatorio(){
        long i = (long)(1 + Math.random() * numero);
        return i;
    }
    
    public static void main(String[] args){
        Long n = new Long("0123456789012");
        GeraNumerosAleatorios gn = new GeraNumerosAleatorios(n);
        System.out.println(gn.getNumeroAleatorio());
        System.out.println(gn.getNumeroAleatorio().toString().length());
    }
}

Como eu faço para que sempre q gerar o numero aleatorio ele tenha o length() de 13 ???

obrigado

Tente:

long i = (long) (Math.random() * 9999999999999l);

Vai gerar um numero entre 0 e 9999999999999

[quote=Mordor]Tente:

long i = (long) (Math.random() * 9999999999999l);

Vai gerar um numero entre 0 e 9999999999999[/quote]

eu preciso gerar de com tamanho length() 13, nao 99999…E preciso atraves de um parametro passado com 13 numeros tbm.

aqui

public class GeraNumerosAleatorios {    
    private Long numero;
    
    public GeraNumerosAleatorios(Long n){
        numero = n;
    }
    
    public Long getNumeroAleatorio(){
        long i = (long)(Math.random() * numero);
        return i;
    }
    
    public static void main(String[] args){
        Long n = new Long("0123456789012"); // novo long com tamanho 13
        GeraNumerosAleatorios gn = new GeraNumerosAleatorios(n); //passo o long
        System.out.println(gn.getNumeroAleatorio()); //gero o numero
        System.out.println(gn.getNumeroAleatorio().toString().length()); //pego o length do numero q deve ser sempre 13
    }
}

obrigado

Deixa ver se entendi, você quer que o sistema gere um numero entre 1000000000000 e 9999999999999, sempre com 13 digitos.
Não entendi oque aquele numero que voce passa para o metodo deve fazer.

Agora vai ter sempre 13 digitos:

long i = (long) (1000000000000 + Math.random() * 8999999999999l);

Treze dígitos entre 0 e 9999999999999 ou entre 1000000000000 e 9999999999999?

Se for a primeira opção você gera um qualquer entre esses valores e depois preenche com zero (sendo que os zeros a esquerda serão desconsiderados para fins de cálculo).
Se for a segunda opção acho que o código do Mordor serve:
long i = (long) (1000000000000 + Math.random() * 8999999999999l);

Você quer gerar um número aleatório de CPF ou CNPJ para poder testar seu sistema, é isso?
Não se esqueça que há números de CPF e CNPJ que começam por um ou mais zeros. Portanto, não é preciso limitar seu gerador de números aleatórios a números que vão de 10000000…000 até 999999…999.

[quote=Mordor]Deixa ver se entendi, você quer que o sistema gere um numero entre 1000000000000 e 9999999999999, sempre com 13 digitos.
Não entendi oque aquele numero que voce passa para o metodo deve fazer.

Agora vai ter sempre 13 digitos:

long i = (long) (1000000000000 + Math.random() * 8999999999999l); [/quote]

Perfeito Mordor, funcionou 100%.

Obrigado