Gerar uma sequencia de 15 numeros

4 respostas
faicoxim

pessoal, pediram pra eu fazer um programinha de 25 numero e gerar 15 numeros não repetidos, maior quantidade possivel, oque eu tenho que usar?
é matriz?
me ajudem aí com ideias
rsrs

4 Respostas

faicoxim

pessoal os numerso começam de 1 a 25, não começa do zero oque eu faço

jessetsilva

experimenta a classe Random, :

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Random.html

A

Olá faicoxim, faz um tempo o amigo pediu algo parecido, devolve uma array de números sem repetição.
Falta tratar algumas coisas por exemplo:
O tamanho do vetor (no seu caso é 25) é maior ou igual a quantidade de valores (que é 15), uma outra forma é usar um List que vai simplificar muito.

espero ter ajudado

import java.util.Random;

public class GeraValor2 {
   
    public static void main(String[] args){
               
        int[] vetor  = new int[25];//Vetor com os valores
        int[] vetor2 = new int[15];//Vetor que guarda as posições
        int posicao  = 0;
               
        //preenche o vetor
        for(int i = 0; i < vetor.length; i++){
            vetor[i] = i;
        }
               
        //Seleciona os 4 valores
        for(int j = 0; j < vetor2.length; j++){           
           
            //posição do vetor
            posicao = getPosicao(vetor, j);
           
           
            vetor2[j] = vetor[posicao];
           
            vetor = trocaPosicao(vetor, posicao, j);
           
            System.out.println("Posicao " + posicao);
           
        }
       
        for(int j = 0; j < vetor2.length; j++){
            System.out.println("Vetor[" + j + "] = " + vetor2[j]);
        }
       
    }
   
    //Seleciona uma posicao aleatória ente os tamanho do vetor
    public static int getPosicao(int[] vetorCopia, int dif){
        Random random = new Random();
        int indice = 0;
       
        indice = random.nextInt(vetorCopia.length - dif);
       
        return indice;
       
    }
   
    /*
     * Jogo o valor que já foi selecionado para as últimas posição
     *
     * Observe que a cada chamada ele coloca no final, na segunda chamada ele joga na posição n - j;
     *
     * e.g.
     * Valores do vetor
     * 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
     * Posições selecionadas 2, 4, 9 ,7
     *
     * 0, 1, 3, 5, 6, 8, 7, 9, 4, 2
     *
     * A cada chamada de uma nova posição "getPosicao()" ele percorre o vetor de n, n-1, n-2, n-3
     *
     * Em java não precisa retornar o vetor, mas não sei em que liguagem você vai usar
     */
    public static int[] trocaPosicao(int[] vetorCopia, int pos, int local){
       
        //Em java o vetor começã com 0, por isso vetorCopia.length - local - 1
        int valor = 0;
        int ultimo = 0;
       
        valor = vetorCopia[pos];//Posição que foi seleciona
        ultimo = vetorCopia[vetorCopia.length - local - 1];//Posição n-j
       
        vetorCopia[pos] = ultimo;
       
        vetorCopia[vetorCopia.length - local - 1] = valor;
       
        return vetorCopia;
    }

}
ViniGodoy
Assim é mais fácil:
List<Integer> numeros = new ArrayList<Integer>();
for (int i = 1; i<=25; i++) {
 numeros.add(i);
}

Collections.shuffle(i);

for (int i = 0; i < 15; i++) {
   System.out.println("Número aleatório: " + numeros.get(i);
}
Criado 27 de novembro de 2008
Ultima resposta 27 de nov. de 2008
Respostas 4
Participantes 4