Я пытаюсь создать случайное число между X и Y без повторения. Все выходы 0s.Случайное число без повторения
Какая ошибка в следующем коде? Используя Loop While
, он работает, но я хочу знать, в чем проблема с кодом Loop Until
.
Sub Main()
Dim X, Y, temp, difference, rNumbers(19) As Integer
Dim Exist As Boolean = False
Dim rndm As New System.Random
Console.WriteLine("Enter the value of X") : X = Console.ReadLine()
Console.WriteLine("Enter the value of Y") : Y = Console.ReadLine()
If Y < X Then
temp = X
X = Y
Y = temp
End If
difference = Y - X
If difference < 20 Then
Console.WriteLine("Error, try again! The difference between X and Y must be greater than 20")
Main()
Else
For Count = 0 To 19
Do
temp = rndm.Next(X, Y)
Exist = False
For Count_2 As Integer = 0 To Count
If temp = rNumbers(Count_2) Then
Exist = True
End If
Next
Loop Until Exist = False
Console.WriteLine(rNumbers(Count))
Next
End If
End Sub
Включить функцию Strict. Ваш RNG должен быть «rndm.Next (X, Y + 1)». Я не могу видеть, где вы когда-либо храните значение 'rNumbers'. Создание массива значений от X до Y и перетасовка их было бы проще. – Plutonix
Я согласен с @Plutonix, лучший вариант - создать список. Что-то вроде 'Dim numbers = Enumerable.Range (X, ((Y - X) + 1)) OrderBy (Function (i) Guid.NewGuid.ToString()) ToList()' Вы можете испускать 'ToList', если вы предпочитают работать с перечислителем. –
Спасибо за ваши предложения, но это вопрос экзамена, который не позволяет использовать счетчики. –