Vetor de números aleatórios não-repetidos de um intervalo em C
Publicado por Perfil removido (última atualização em 16/04/2012)
[ Hits: 14.390 ]
Este programa cria um vetor unidimensional de tamanho N e preenche-o por completo com números no intervalo de 1 até N sem repetir um número já inserido na próxima inserção.
Ele tenta gerar um número aleatório, verifica se este já está escrito, caso não esteja ele insere e procura valores para a próxima posição, senão ele gera outro valor e reprocessa com o teste.
Para se observar se houve alguma repetição, pode se observar a saída do seguinte comendo:
$ ./alea001 | sort -n --key=2
A título de exemplo foi escolhido o valor 52 por causa do baralho tradicional ter 52 cartas.
Para valores pequenos observa-se diretamente se houve repetições.
Ainda não encontrei falhas, o que significa que não possa havê-las.
#include <stdio.h> #include <stdlib.h> #include <limits.h> #include <time.h> // Para testar se não há números repetidos, usar por exemplo: // ./alea001 | sort -n --key=2 #define VALOR 52 int main (void) { int i, j, k; int vec[VALOR]; float n=VALOR; i = 0; while (i<VALOR) vec[i++] = -1; srand((unsigned int)time((time_t *)NULL)); i = 0; j = 0; while (i<n) { j = 1 + (int) (n * ((float)rand()/(float)INT_MAX)); k = 0; while (k<=i && vec[k++]!=j); if (k==i+1) vec[i++] = j; } i = 0; while (i<VALOR) printf ("%u\t%u \n", i, vec[i++]); // putc('\n',stdout); return 0; }
Função para escrita de um número em notação binária através de recursão
Soma de números através de strings
Acendedor de leds pela porta paralela
Texto colorido em C para Linux
Nenhum coment�rio foi encontrado.
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
O macete do Warsaw no Linux Mint e cia
Um modo leve de ouvir/ver áudio/vídeo da internet em máquinas pererecas
Resolver algumas mensagens de erro do SSH
Instalar módulo de segurança do Banco do Brasil Warsaw do tipo .run
Sem espaço na partição home (2)
O que você está ouvindo agora? [2] (190)
Procrastinação e autossabotagem são problemas muito comuns na sociedad... (5)