Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lary B

[Resolvido] Gerar números aleatórios sem repetição em C

Recommended Posts

Oi pessoal, eu tenho que fazer um sorteio de números e os armazenar em um vetor mais não pode haver numero repetido neste vetor. O programa faz isso, mas na hora de mostrar o vetor, ele demorar um pouco e só depois mostra os números. O compilador não mostra nenhum erro, então acredito que seja erro de lógica, mas não consigo achar.

Compilador: DevC++

 


int sorteio (int num) {
   srand(time(NULL));
   num=rand()%10;
return num;
}

int main (){
int i,j,pedras[10],achou,num;

for (i=0;i<10;i++) {
   achou=0;
   while (achou==0) {
         achou=1;
         pedras[i]=sorteio(num);
         for (j=0;j<10;j++) {
             if ((pedras[j]==pedras[i])&&(i!=j)) {
                   pedras[i]=sorteio(num);
                   achou=0;
                   j=10;
             }
         }

   }
} 
for (i=0;i<10;i++) {
   printf("%d\n",pedras[i]);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugiro uma implementação diferente: use o conceito de uma urna, dessas que usamos em sorteios. Ao sortear um número, retire-o da urna. Isso garante a inexistência de repetições. Voce pode fazer isso com algoritmos usando duas vetores (ou listas): uma com a amostra e outro com os sorteados

 

 

veja este tópico:

http://forum.imasters.com.br/index.php?/topic/418584-criar-uma-sequencia-numerica-e-randomica-sem-repetir-valor/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui, realmente a implementação é mais simples,e bem menor. Beraldo,vlw mesmo pela ajuda. :joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.