Como pegar um elemento random de um arraylist?

Ae galera… to com um trabalho de simulação de bingo pra entregar na facul…

e eu to na parte que faz simular o globo, então estou tentando fazer da seguinte forma.

static void simularBingo() {
		List<Integer> globo = new ArrayList<Integer>(); // meu globo de bolas
		for (int i = 1; i <= 90; i++) globo.add(i); // Inicializa o arraylist com as "bolas" de 1 a 90
		int nSorteado = //PEGAR_ELEMENTO_ALEATORIO_NO_ARRAY
		globo.remove(nSorteado-1); // remove o numero sorteado do arraylist
}

Como fazer para pegar um elemento aleatorio dentro do arraylist? Eu tentei usando math gerando aleátoriamente um numero de 1 a 90 e removento a posição, o problema é que esse número pode se repetir o que eu acho que não seria legal.

Eu estou com outro problema que é na parte de gerar as cartelas com a questão de repetir números já que estou usando Math.random() para gerar os números…

vejam a idéia…

public class Bingo {	
	private int cartela[] = new int[15];
	
	public Bingo() {
		geraJogoBingo();
		ordenaJogoBingo();
	}
	
	void geraJogoBingo() {		
		for (int i = 0; i < cartela.length; i++) {			
			int n = (int) (1+ Math.random() * 90);
			cartela[i] = checaRepetido(n);			
		}		
	}

        void ordenaJogoBingo() {
		Arrays.sort(cartela);
	}

reparem no método checaRepetido que eu não implementei ainda por não saber como checar se um número está repetido dentro de um array, talvez com recussividade poderia sanar esse problema, mas não faço a minima ideia… to quebrando a cabeça -.-

valeu gente

Você pode embaralhar um arrayList usando o método Collections.shuffle.

Depois disso, é só pegar os elementos 1 a 1, em ordem.
Assim vc garante que nenhum se repete e que serão escolhidos aleatoriamente.

[code]
List globo = new ArrayList(); // meu globo de bolas
for (int i = 1; i <= 90; i++)
globo.add(i); // Inicializa o arraylist com as

Collections.shuffle(globo); //Embaralha o globo

//Imprime os 5 primeiros números aleatórios.
for (int i = 0; i < 5; i++)
System.out.println(globo.get(i));[/code]

1 curtida

Ow então…

Random r = new Random();
int rdm = globo.get(r.nextInt(globo.size()));

O problema é que voce não saberia qual numero já foi sorteado a não ser qe o retire da List e depois sorte-se novamente, o método do ViniGodoy é melhor pro seu caso.
Só mostrei para saber que é possivel fazer de mais formas.