Como gerar sequência aleatórias eliminando sequências especificas?

6 respostas
guj1

Olá,

Preciso saber o que estudar para fazer um determinado algoritmo.

Minha ideia é: eu tenho um universo de 82 elementos e preciso criar subconjuntos de 50 elementos sem repetição de elementos no mesmo subconjunto, ou seja, desejo criar uma combinação simples.

Alguém pode me dar um norte de quais classes eu preciso estudar, existem classes específicas para isso no java?

Agradeço a atenção.

6 Respostas

freakazoid

Cada subconjunto precisa ter quantos elementos?
A organização dos elementos nos subconjuntos pode ser aleatória ou existe alguma regra?

guj1

freakazoid:
Cada subconjunto precisa ter quantos elementos?
A organização dos elementos nos subconjuntos pode ser aleatória ou existe alguma regra?

Cada subconjunto precisa ter 50 elementos e ordem não importa, mas por organização seria bom que ficassem na ordem crescente.

pmlm

Alguém precisa de estudar Collections

List umaLista = ..... // Lista de 82 elementos
Collections.shuffle(umaLista); // embaralha os elementos
List elementosEscolhidos = umaLista.sublist(0,50); // 50 elementos aleatórios
Collections.sort(elementosEscolhidos); // ordena os elementos
A

Acho que você pode resolver seu problema usando os métodos Collections.shuffle, Collections.sort e List.sublist.

Mas tome cuidado que esses métodos não retornam uma nova collection, eles geralmente atuam na collection que passou como parâmetro. Por isso seria uma boa criar cópias defensivas das suas collections durante esse processo.
(Ou você pode ter seu primeiro subconjunto sendo alterado depois que você obter o segundo subconjunto).

freakazoid

Apesar de pouco provável, usando shuffle vc poderá obter listas iguais.

Recomendo que sempre faça uma validação para eliminar este risco.

pmlm

freakazoid:
Apesar de pouco provável, usando shuffle vc poderá obter listas iguais.

Recomendo que sempre faça uma validação para eliminar este risco.


Se é aleatório, uma lista igual é uma possibilidade sim, não é um risco, é uma das n combinações possíveis.

Criado 16 de fevereiro de 2014
Ultima resposta 17 de fev. de 2014
Respostas 6
Participantes 4