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
Gerar uma sequencia de 15 numeros
4 Respostas
pessoal os numerso começam de 1 a 25, não começa do zero oque eu faço
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;
}
}
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
Alura Git Flow: entenda o que é, como e quando utilizar Entenda o que é Git Flow, como funciona seu fluxo com branches como Master, Develop, Feature, Release e Hotfix, além de vantagens e desvantagens.
Casa do Codigo Ontologias e Web Semantica: Do conceito a aplicacao Por Ivam Galvao Filho — Casa do Codigo