Генерация случайных чисел без повторения в Visual Basic: изучение различных методов

В Visual Basic генерация случайных чисел без повторения может быть полезным требованием в различных сценариях, таких как создание уникальных идентификаторов, перетасовка данных или проведение рандомизированного моделирования. В этой статье мы рассмотрим несколько методов достижения этой функциональности, каждый из которых имеет свои преимущества и особенности. Итак, давайте углубимся и узнаем, как генерировать случайные числа без повторения в Visual Basic!

Метод 1: использование структуры данных списка.
Один подход заключается в использовании структуры данных списка для хранения сгенерированных случайных чисел. Вот пример реализации этого метода:

Dim random As New Random()
Dim numbers As New List(Of Integer)()
For i As Integer = 1 To 10
    Dim randomNumber As Integer
    Do
        randomNumber = random.Next(1, 100)
    Loop While numbers.Contains(randomNumber)

    numbers.Add(randomNumber)
    Console.WriteLine(randomNumber)
Next

Метод 2: использование алгоритма Фишера-Йейтса
Алгоритм Фишера-Йейтса — популярный метод случайного перетасовки элементов. Применяя этот алгоритм к последовательному списку чисел, мы можем добиться желаемого эффекта генерации случайных чисел без повторения. Вот пример реализации:

Dim random As New Random()
Dim numbers As New List(Of Integer)()
For i As Integer = 1 To 10
    numbers.Add(i)
Next
For i As Integer = numbers.Count - 1 To 1 Step -1
    Dim j As Integer = random.Next(i + 1)
    Dim temp As Integer = numbers(i)
    numbers(i) = numbers(j)
    numbers(j) = temp
Next
For Each number As Integer In numbers
    Console.WriteLine(number)
Next

Метод 3: использование битового массива
Если вы имеете дело с большим диапазоном чисел и эффективность использования памяти вызывает беспокойство, вы можете использовать BitArray для отслеживания сгенерированных случайных чисел. Вот пример реализации:

Dim random As New Random()
Dim bitArray As New BitArray(100)
For i As Integer = 1 To 10
    Dim randomNumber As Integer
    Do
        randomNumber = random.Next(1, 100)
    Loop While bitArray(randomNumber - 1)

    bitArray(randomNumber - 1) = True
    Console.WriteLine(randomNumber)
Next

В этой статье мы рассмотрели три метода генерации случайных чисел без повторения в Visual Basic. Используя структуру данных List, применяя алгоритм Фишера-Йейтса или используя BitArray, вы можете достичь желаемого результата в соответствии с вашими конкретными потребностями. При выборе наиболее подходящего метода для вашего приложения не забудьте учитывать такие факторы, как производительность, использование памяти и диапазон чисел, с которым вы работаете.