C#

Como gerar números aleatórios sem repetição em C#

Gerar números aleatórios é uma tarefa comum em programação, mas quando queremos evitar repetições, a abordagem precisa ser um pouco mais cuidadosa. Neste post, vamos ensinar como gerar números aleatórios sem repetição em C# de forma fácil e prática.

Usando uma Lista

Uma maneira prática de gerar números aleatórios sem repetição é usando uma lista. Vamos ver um exemplo passo a passo:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        int quantidade = 10; // Defina a quantidade de números que você deseja
        int max = 20; // Defina o máximo possível

        List<int> numeros = GerarNumerosAleatorios(quantidade, max);
        
        Console.WriteLine("Números aleatórios gerados:");
        foreach (var numero in numeros)
        {
            Console.WriteLine(numero);
        }
    }

    static List<int> GerarNumerosAleatorios(int quantidade, int max)
    {
        Random random = new Random();
        HashSet<int> numerosGerados = new HashSet<int>();

        while (numerosGerados.Count < quantidade)
        {
            int numero = random.Next(0, max);
            numerosGerados.Add(numero);
        }

        return new List<int>(numerosGerados);
    }
}

Explicação do código

  1. Definindo parâmetros: Você pode definir quantos números deseja gerar e o máximo permitido.

  2. HashSet: Utilizamos um HashSet<int> para armazenar os números gerados. Isso garante que não haverá duplicatas, pois um HashSet não permite valores repetidos.

  3. Loop de geração: O loop continua gerando números aleatórios até que a quantidade desejada de números únicos seja alcançada.

  4. Retorno da Lista: Por fim, convertendo o HashSet em uma lista, conseguimos trabalhar com os números gerados conforme necessário.

Considerações:

Limitações: Tenha cuidado com a quantidade de números que deseja gerar em relação ao intervalo máximo. Se a quantidade for maior do que o intervalo, o código entrará em um loop infinito.

Desempenho: Para um número muito grande de valores únicos, o desempenho pode ser afetado. Neste caso, considere uma abordagem diferente, como embaralhar uma lista previamente criada.

Com essa abordagem simples, você pode gerar números aleatórios sem repetição em C#. Sinta-se à vontade para ajustar os parâmetros conforme necessário para atender às suas necessidades! Experimente e compartilhe suas experiências! 🚀

Outro exemplo prático usando um vetor:

No exemplo abaixo, 20 valores aleatórios, sem repetição, de 0 a 50, serão gerados e armazenados em um vetor de 20 posições:

Random randNum = new Random();
int[] numeros = new int[20];
string valor;

for (int i = 0; i < 20; i++)
{
  int rnd = 0;

  do
  {
    rnd = randNum.Next(50);
  } while (numeros.Contains(rnd));

  numeros[i] = rnd;
}
Aprenda do zero ou aprimore seus conhecimentos em C#. Domine os conceitos de Orientação a Objetos e crie sistemas complexos integrados com banco de dados.

CONHEÇA O CURSO COMPLETO DE C# COM + DE 100 AULAS PRÁTICAS. Tenha acesso vitalício e certificado de conclusão.

CLIQUE NA IMAGEM ABAIXO E CONFIRA MAIS DETALHES:

Link do curso: https://go.hotmart.com/L70031146H


Dúvidas ou sugestões sobre como gerar números aleatórios sem repetição em C#? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:  https://youtube.com/criandobits

Bene Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *