Estou fazendo um exercício que consiste no preenchimento de uma cartela de bingo. Uma matriz 4x4 que recebe valores aleatórios e gera a cartela.
Porém, usando
Random r = new Random()
r.Next(intervalo)
gera números repetidos.
Como fazer para não ter repetição?
PS: O algoritmo dos colegas descrito acima, funciona, porém tem viés e não gera uma distribuição uniforme, ou seja, no caso em questão a chance de um numero X aparecer no final da cartela é menor do que dele aparecer no começo. Com o algoritmo que citei acima esse viés não existe.
PS2:
Testei aqui e parece que eu estava errado, o método proposto pelos colegas da resultados equivalentes:
Depois do seu post eu fui procurar entender onde esse viés estava e vi que isso acontece quando você tenta fazer um shuffle de um array usando rand diretamente.
Referências aqui: https://blog.codinghorror.com/the-danger-of-naivete/
Mas como o método proposto aqui nao dá chance para um valor “sorteado” ser manipulado novamente, achei que nao teria esse viés, e num exemplo que testei aqui, realmente ele nao demonstra ter isso.
Para quem quer implementar essa soluçao com shuffle, no java temos o Collections.shuffle que já utiliza o algoritmo que você postou. Nao sei se existe algo equivalente no .NET