Vetor

16 respostas
R

Ola!
Preciso criar um vetor de 10,000,000 posições de numeros sorteados como faço alguém pode ajudar !!
Obrigado !

16 Respostas

S

Você quer criar um vetor, e atribuir a ele um número aleatório, é isso?

public class Sorteio{
public static void main(String[]args){

int vet[] = new int[9999999];

for (i=0;i<=10000000;i++){
vet[i] = (int) (Math.random)*1000;// vai gerar números aleatórios até 1000.
System.out.println("Posição" + i + "recebeu o numero" + vet[i]);
}

}

}

Será que isso te ajuda?

M

Corrigindo:

public class Sorteio{
public static void main(String[]args){

int vet[] = new int[10000000];

for (i=0;i<10000000;i++){
vet[i] = (int) (Math.random)*1000;// vai gerar números aleatórios até 1000.
System.out.println("Posição" + i + "recebeu o numero" + vet[i]);
}

}

}
S
Mitidiero:
Corrigindo:
public class Sorteio{
public static void main(String[]args){

int vet[] = new int[10000000];

for (i=0;i<10000000;i++){
vet[i] = (int) (Math.random)*1000;// vai gerar números aleatórios até 1000.
System.out.println("Posição" + i + "recebeu o numero" + vet[i]);
}

}

}

Mas o seu tem 10000001 posições, pois um vetor começa com 0.

Eider

Mais ele só vai até o 9999999!!!

for (i=0;i<10000000;i++)

são as mesmas 10000000 de posições

S

É verdade, acabei colocando o sinal de = também.

Amigo, esse aqui está corrigido. rsrs:

public class Sorteio{   
public static void main(String[]args){   
  
int vet[] = new int[9999999];   
  
for (i=0;i<10000000;i++){   
vet[i] = (int) (Math.random)*1000;// vai gerar números aleatórios até 1000.   
System.out.println("Posição" + i + "recebeu o numero" + vet[i]);   
}   
  
}   
  
}
denisspitfire

Mas Romildoroni voce entendeu o código acima?

S
public class Sorteio{   // sua classe  
public static void main(String[]args){ // seu método que fará sua aplicação rodar     

// aqui estou construindo um vetor do tipo int, ele tem 10000000 posições, pois os vetores iniciam com 0.
     
int vet[] = new int[9999999];  


// aqui é criado o laço de repetição para atribuir um numero aleatório a cada posição do vetor. Quando o i ultrapassar o numero de posições declarado no vetor, o laço para de ser executado.
     
for (i=0;i<10000000;i++){     

vet[i] = (int) (Math.random)*1000;// vai gerar números aleatórios até 1000 nesse caso.
     
System.out.println("Posição" + i + "recebeu o numero" + vet[i]); 
}     
     
}     
     
}

Sugiro você substituir esses valores, e colocar valores menores para você entender melhor a lógica.

M

Então, começa com 0 e acaba sempre com 1 a menos do que dito, ou seja, se fizer [10] terá do 0 ao 9, e tirei o = pois o for iria a uma posição a mais e daria uma exceção.

Amigo(Criador do tópico), estude loops, tem MUITO, MAS MUITO material na internet, e é TOTALMENTE semelhante em todas linguagens (A lógica).

mveloso
Soruji:
É verdade, acabei colocando o sinal de = também.

Amigo, esse aqui está corrigido. rsrs:

public class Sorteio{   
public static void main(String[]args){   
  
int vet[] = new int[9999999];   
  
for (i=0;i<10000000;i++){   
vet[i] = (int) (Math.random)*1000;// vai gerar números aleatórios até 1000.   
System.out.println("Posição" + i + "recebeu o numero" + vet[i]);   
}   
  
}   
  
}

Os 2 códigos estão porcos e não funcionam, pois não inicializaram a variável "i" corretamente, além disso evitem esses nomes de variáveis, recomendo dar nomes completos. Todo vetor tem um propriedade "length" que corresponde ao tamanho do vetor. Logo ficaria mais legível e vc garante que não buscará em momento algum uma posição fora do vetor.

for (int indiceAtual = 0; indiceAtual < vet.length; indiceAtual++){
			// seu código
		}

Outra opção seria usar a instrução for each ... ficaria dessa forma ...

for (int indiceAtual: vet){
				//Aqui vai seu código		
		}

Abraços

M
mveloso:
Soruji:
É verdade, acabei colocando o sinal de = também.

Amigo, esse aqui está corrigido. rsrs:

public class Sorteio{   
public static void main(String[]args){   
  
int vet[] = new int[9999999];   
  
for (i=0;i<10000000;i++){   
vet[i] = (int) (Math.random)*1000;// vai gerar números aleatórios até 1000.   
System.out.println("Posição" + i + "recebeu o numero" + vet[i]);   
}   
  
}   
  
}

Os 2 códigos estão porcos e não funcionam, pois não inicializaram a variável "i" corretamente, além disso evitem esses nomes de variáveis, recomendo dar nomes completos. Todo vetor tem um propriedade "length" que corresponde ao tamanho do vetor. Logo ficaria mais legível e vc garante que não buscará em momento algum uma posição fora do vetor.

for (int indiceAtual = 0; indiceAtual < vet.length; indiceAtual++){
			// seu código
		}

Outra opção seria usar a instrução for each ... ficaria dessa forma ...

for (int indiceAtual: vet){
				//Aqui vai seu código		
		}

Abraços

1 - Não deixou de ser inicializada, deixou de ser DECLARADA;
2 - Quando se está ensinando não há a necessidade de ser o melhor código do mundo, e sim o mais didático.

mveloso

Então ensina da forma didática que o cara vai construir códigos porcos até ele entender a necessidade de um código legível.

Ou, muito melhor, ensina da maneira correta!

M

mveloso:
Então ensina da forma didática que o cara vai construir códigos porcos até ele entender a necessidade de um código legível.

Ou, muito melhor, ensina da maneira correta!

Considero que pessoas como vc estragam o fórum, por isso não lhe darei o mérito de conseguir uma discussão.

mveloso

Mitidiero:
mveloso:
Então ensina da forma didática que o cara vai construir códigos porcos até ele entender a necessidade de um código legível.

Ou, muito melhor, ensina da maneira correta!

Considero que pessoas como vc estragam o fórum, por isso não lhe darei o mérito de conseguir uma discussão.

Amigo, me desculpe se entendeu errado, a intenção não foi a de entrar em uma discussão ou de atingi-lo diretamente. Apenas, coloquei o meu ponto de vista sobre seu comentário, para ser analisado de forma construtiva.
Abraços, precisando tamo ai … :wink:

E
Soruji:
Você quer criar um vetor, e atribuir a ele um número aleatório, é isso?
public class Sorteio{
public static void main(String[]args){

int vet[] = new int[9999999];

for (i=0;i<=10000000;i++){
vet[i] = (int) (Math.random)*1000;// vai gerar números aleatórios até 1000.
System.out.println("Posição" + i + "recebeu o numero" + vet[i]);
}

}

}
Soruji (é ソルジ ou 소루지 ? ) - declarar um array desse jeito cria um array que vai de 0 até 9999998, não 9999999. Isso é um problema que tive quando aprendi C - em C e em Java a declaração de arrays indica o tamanho do array, não o índice de sua última posição.
M

fiz um outro exemplo vamos ver se ajuda

import java.util.Random;

public class Sorteio{

	public static void main(String args[]){

		Random rd = new Random();		

		int array[] = new int[10];

		for(int x = 0; x < array.length; x++){

			array[x] =rd.nextInt(array.length));
			
		}

		for(int numeros : array){

			System.out.println(numeros);
		}
	}
}

basta apenas substituir o 10 pelo números de posições desejadas no array.
lembrando que o mesmo número do array será o número que irá ser sorteado, caso queira sortear do número 1 ao 10 vc pode colocar no lugar de
rd.nextInt(array.length) substituir por (1+rd.nextInt(10)) isso indica que vc quer que seja sorteado do número 1 ao número 10.

M

fiz um outro exemplo vamos ver se ajuda

import java.util.Random;

public class Sorteio{

	public static void main(String args[]){

		Random rd = new Random();		

		int array[] = new int[10];

		for(int x = 0; x < array.length; x++){

			array[x] =rd.nextInt(array.length));
			
		}

		for(int numeros : array){

			System.out.println(numeros);
		}
	}
}

basta apenas substituir o 10 pelo números de posições desejadas no array.
lembrando que o mesmo número do array será o número que irá ser sorteado, caso queira sortear do número 1 ao 10 vc pode colocar no lugar de
rd.nextInt(array.length) substituir por (1+rd.nextInt(10)) isso indica que vc quer que seja sorteado do número 1 ao número 10.

Criado 28 de março de 2012
Ultima resposta 29 de mar. de 2012
Respostas 16
Participantes 8