Не повторяющиеся номера - PullRequest
0 голосов
/ 23 мая 2018

Я делаю скрипт C # в Visual Studio для форм Windows.
Мне нужно получить не дублирующиеся числа, и это то, что я пробовал в этом скрипте, что происходит, когда я компилирую проект, я получаю этослучайные числа, но иногда эти числа дублируются, поэтому я хотел бы, чтобы вы сказали мне, какую ошибку я допустил, или даже если ошибка содержится в этом куске кода.
Мне нужно сохранить это случайное число от 1 до75, чтобы сказать, если эти 75 создали случайные числа, по сравнению с таблицей с некоторыми числами, которые у меня уже есть равны.

        for (int i = 0; i < 76; i++)
        {
            auxiliar = random.Next(1, 75);
            bool continuar = false;

            while (!continuar)
            {
                for (int j = 0; j <= contador; j++)
                {
                    if (auxiliar.ToString() == totalBalotas[j])
                    {
                        continuar = true;
                        j = contador;
                    }
                }
                if (continuar)
                {
                    auxiliar = random.Next(1, 75);
                    devuelve = auxiliar.ToString();
                    continuar = false;
                    estaContando = true;
                    return devuelve;
                }
                else
                {
                    continuar = true;
                    totalBalotas[contador] = auxiliar.ToString();
                    devuelve = auxiliar.ToString();
                    contador++;
                    estaContando = true;
                    return devuelve;
                }
            }
        }
        estaContando = true;
        return devuelve;
    }

Это код.
https://i.stack.imgur.com/D7wqk.png

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Не могли бы вы сказать, какова цель создания неповторяющихся чисел?Должны ли эти числа быть случайными?Есть ли какие-нибудь границы для этих чисел?

Что я могу вспомнить сейчас, так это использование Random для генерации чисел и сохранения уже используемых чисел в коллекции, чтобы избежать дублирования.

Вот пример классаэто обеспечивает уникальные случайные числа.Вы можете подумать о том, чтобы сделать его статичным и поточно-ориентированным, если вам это нужно.

class NonDuplicateRandomNumbersGenerator
{
    private Random r = new Random();
    private ISet<int> usedNumbers = new HashSet<int>();

    public int NonDuplicateRandomNumber()
    {
        var number = r.Next();

        while (usedNumbers.Contains(number))
        {
            number = r.Next();
        }

        usedNumbers.Add(number);
        return number;
    }
}
0 голосов
/ 23 мая 2018

Я могу немного понять, что вы пытаетесь объяснить, при генерации случайных чисел их можно повторять, если вы хотите генерировать неповторяющиеся случайные числа, вам придется сравнить со всем списком чисел, уже сгенерированным каждым сгенерированным числом.

...