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
- Definindo parâmetros: Você pode definir quantos números deseja gerar e o máximo permitido.
- HashSet: Utilizamos um
HashSet<int>
para armazenar os números gerados. Isso garante que não haverá duplicatas, pois umHashSet
não permite valores repetidos. - Loop de geração: O loop continua gerando números aleatórios até que a quantidade desejada de números únicos seja alcançada.
- 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;
}
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
Sobre o Autor
0 Comentários