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.433 ]
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; }
Checar letras A em string e proibir numeros
Converte Farenheit para Celsius
Nenhum coment�rio foi encontrado.
O que é o THP na configuração de RAM do Linux e quando desabilitá-lo
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Como unir duas coleções de ROMs preservando as versões traduzidas (sem duplicatas)
Como instalar o Telegram Desktop no Ubuntu 24.04
Overclocking Permanente para Drastic no Miyoo Mini Plus
Problemas de chaves (/usr/share/keyrings) no Debian
Converter os repositórios Debian para o novo formato com as chaves
Programa simples pra cortar vídeos (7)
Instalação automatizada do Debian 12 em UEFI (1)
Browser/Placa de vídeo trava Ubuntu 22.04 (2)