Sortear numeros de uma lista de numeros definidos sem repetir

Pessoal e o seguinte peciso sortear 4 numeros de um total de N… numeros… isso eu ja conseguir fazer… so que to tentando e quebrando a cabeça para fazer a verificação se dessa lista de numeros que passei os 4 sorteados nao sao repeditos pois o random nao verifica isso… ai sempre ele repete os numeros o trecho de codigo abaixo e o que ja fiz…

public static void GeraProdutoaleatorio(HttpSession Sessao)  
  {
  	Vector vProdutos  = new Vector();
	vProdutos = jDMO("CA_Produtos","IDProduto,Descricao,Categoria,Setor,Preco,Status"," Where Descricao Like'%m%'");
  	int Inicio = 1;
	int Fim = vProdutos.size();
	Log("vProdutos.size()"+Fim);
	int QtdNumero = 4;
	
	int Numeros[] = new int[Fim];
	
	for (int iContador=0; iContador<Fim; iContador++) {                                
            //value = Inicio + (int) ( Math.random() * Fim );               
            Numeros[iContador] = Integer.parseInt(Recordfields(vProdutos,"IDProduto",iContador));  
			Log("iContador====>"+iContador);
			Log("Numeros[iContador]:="+Numeros[iContador]);               
        } 
		
    int Resultado[] = new int[QtdNumero];                
        
		for (int cont=0; cont<QtdNumero; cont++) {               
                   
			Random random = new Random();                
			int Ind = random.nextInt(Numeros.length);
			Log("Numero Sorteado:="+Ind);
			//Resultado[cont]=Ind;
			
			//for (int x=0; x<QtdNumero; x++) {
			
			Vector vInfo  = new Vector();
			vInfo = jDMO("CA_Produtos","IDProduto,Descricao,Categoria,Setor,Preco,Status","Where IDProduto="+Numeros[Ind]+"");
			
			ArmazenaSessao(Sessao,"IMGProduto"+cont,Numeros[Ind]);
			String sDescricao = Recordfields(vInfo,"Descricao",0);
			String sPreco = Recordfields(vInfo,"Preco",0);
			
			ArmazenaSessao(Sessao,"DescricaoProduto"+cont,sDescricao);
			ArmazenaSessao(Sessao,"PrecoProduto"+cont,sPreco);
			
			//}
			
		}
  }

cara, primeiro coloque seu código entre as tags code e /code. Segundo, tu pode armazenar os numeros ja sorteados em um array e verificar a cada sorteio se o número sorteado está dentro do array…

obrigado, à desculpe pelo code /code e que me cadastrei hoje que dizer agora pra ser exato e nao deu tempo ainda de familiarizar com o site… obrigado pela dica mas ja tentei fazer isso… tenho o vetor com os 4 numeros sorteados … acho que hoje nao consigo pensasr mais nao… :slight_smile: seria um for dentro do outro… so se eu quebrar o meu codigo e criar uma metodo so para o sorteio…

Bom Com mais uma noite sem dormir consegui finalmente resolver o problemaObrigado pela ajuda de todos! segue o codigo abaixo:

public static void GeraProdutoaleatorio(HttpSession Sessao)  
  {
  	Vector vProdutos  = new Vector();
	vProdutos = jDMO("CA_Produtos","IDProduto,Descricao,Categoria,Setor,Preco,Status"," Where Descricao Like'%m%'");
  	int Inicio = 1;
	int Fim = vProdutos.size();
	//Log("vProdutos.size()"+Fim);
	int QtdNumero = 4;
	int Numeros[] = new int[Fim];
	int Resultado[] = new int[4];
	
	for (int iContador=0; iContador<Fim; iContador++) {                                              
            Numeros[iContador] = Integer.parseInt(Recordfields(vProdutos,"IDProduto",iContador));  
			//Log("iContador====>"+iContador);
			//Log("Vetor Numeros["+iContador+"]:="+Numeros[iContador]);               
    }                
        String sSorteados="";
		int j=0;
		for (int x=0; x<4; x++) { 
			
			int i=0;
			Random random = new Random();
			int Ind = random.nextInt(Numeros.length);
			Resultado[x] = Numeros[Ind];
			Log("Numero "+x+" Sorteado:="+Numeros[Ind]);
			
			while(i==0) {
				
				if (sSorteados.indexOf("<"+Numeros[Ind]+">")!=-1) {
					j++;
					Log("Achei o Numero:="+Numeros[Ind]);
					Log("Sorteando Novamente...");
					Ind = random.nextInt(Numeros.length);
					Resultado[x] = Numeros[Ind];
					Log("Numero Disponivel:="+Numeros[Ind]);
							
				} else {
					i=1;
					sSorteados = sSorteados+"<"+Numeros[Ind]+">";
				}
			}
		}
		
		Log("Lista de Sorteados:="+sSorteados);
		Log("Numero de repescagem:="+j);
		for (int cont=0; cont<QtdNumero; cont++) {               
                   	Log("Vetor Resultado[]:="+Resultado[cont]);
						
			Vector vInfo  = new Vector();
			vInfo = jDMO("CA_Produtos","IDProduto,Descricao,Categoria,Setor,Preco,Status","Where IDProduto="+Resultado[cont]+"");
			
			ArmazenaSessao(Sessao,"IMGProduto"+cont,Resultado[cont]);
			String sDescricao = Recordfields(vInfo,"Descricao",0);
			String sPreco = Recordfields(vInfo,"Preco",0);
			
			ArmazenaSessao(Sessao,"DescricaoProduto"+cont,sDescricao);
			ArmazenaSessao(Sessao,"PrecoProduto"+cont,sPreco);			
		}
  }