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?
ListumaLista=.....// Lista de 82 elementosCollections.shuffle(umaLista);// embaralha os elementosListelementosEscolhidos=umaLista.sublist(0,50);// 50 elementos aleatóriosCollections.sort(elementosEscolhidos);// ordena os elementos
A
AbelBueno
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.