Ir ao conteúdo
  • Cadastre-se

Ajuda com função rand() - numeros aleatorios sem repetição


Murilo Marchiori

Posts recomendados

Boa noite, senhores. Gostaria da sua ajuda com um pequeno programa que estou fazendo para gerar numeros aleatorios, mas devo fazer isso sem repetir os elementos. A parte do codigo que esta entre os comentarios "NAO FUNCIONA" fica se repetindo, num loop infinito. Alguem pode me ajudar? Obrigado!


#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

const int NUM=100;
int main()
{
cout << "\n\nPrograma para gerar numeros aleatorios";

//declaração das variáveis
int vetor[NUM], i=0, cont=0, verifica_repeticao=0, j=0, cont_linha=0;

//inicializando função randômica
srand(time(NULL));

//preenchendo o vetor de 100 posições
for(i=0; i<NUM; i++)
{
verifica_repeticao = (rand()%NUM)+1;

//verificando se o número já existe, afim de evitar elementos repetidos

//NAO FUNCIONA

cont=0;

while(cont != 1)
{
for(j=0; j<i; j++)
if(verifica_repeticao == vetor[j])
cont=2;

if(cont==2)
verifica_repeticao = (rand()%NUM)+1;
else
cont=1;
}

//NAO FUNCIONA

vetor[i]=verifica_repeticao;
}

cout << "\n\n";

for(i=0; i<NUM; i++)
{
cout << vetor[i] << " ";
cont_linha++;

if(cont_linha == 10)
{
cout << "\n";
cont_linha=0;
}
}
}

Link para o comentário
Compartilhar em outros sites

eu ja fiz isso em vb6, a lógica que eu usei foi essa

1 array com todos elementos (ex 1.. 100)

Eu sorteava uma posição, ex: 35

na posição 35 esta o valor 35

pego o valor 35 e removo da array

...

só não sei fazer isso em c++, mas fica como uma dica

nao entendi o q você fez... porque você sorteava um numero e tirava ele do array?

Link para o comentário
Compartilhar em outros sites

Ola, amigos, só pra constar, consegui resolver o exercício, vou deixar aqui postado, talvez ajude alguem com a mesma duvida. Administration, please, close ^^


#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

const int NUM=100;
int main()
{
cout << "\n\nPrograma para gerar numeros aleatorios";

//declaração das variáveis
int vetor[NUM], i=0, j=0, cont_linha=0;

//inicializando função randômica
srand(time(NULL));

//preenchendo o vetor de 100 posições
for(i=0; i<NUM; i++)
{
vetor[i] = (rand()%NUM)+1;

//verificando se o número já existe, afim de evitar elementos repetidos

for(j=0; j<i; j++)
{
if(vetor[j] == vetor[i])
{
vetor[i] = (rand()%NUM)+1;
j=0;
}
}
}

cout << "\n\n";

for(i=0; i<NUM; i++)
{
cout << vetor[i] << " ";
cont_linha++;

if(cont_linha == 10)
{
cout << "\n";
cont_linha=0;
}
}
}

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!