Мне нужно написать цикл, который будет производить, чтобы сделать 4 уникальных номера. Таким образом, это было бы похоже на 4- 2 - 5 - 7, и это не может быть похоже на 4 - 4 - 5- 7, потому что 4 не уникальны. Это просто я борюсь с циклом Я пробовал цикл обучения на YouTube, но не знаю, может быть, если я увижу, что кто-то это сделает в этой концепции, я получу зависание, еслиКак создать эту программу?
ответ
Я могу только предположить, что вам нужно 4 уникальных, случайных номера. При этом, как предположение, мы в первую очередь необходимо будет метод для генерации случайных чисел (заимствованные из https://stackoverflow.com/a/2677819/3579199):
Public Function GetRandom(ByVal Min As Integer, ByVal Max As Integer) As Integer
Static Generator As System.Random = New System.Random()
Return Generator.Next(Min, Max)
End Function
Этот метод возвращает случайное число, которое> = Min и Max <. Теперь мы можем использовать этот метод для генерации 4, уникальных случайных чисел в цикле. В следующем примере, я буду считать, что вам нужно 4 цифры от 1 до 99 включительно:
Dim count = 0
Dim numbers(3) As Integer
Do
Dim randomNumber = GetRandom(1, 100)
If(Array.Exists(numbers, Function(element)
Return element.Equals(randomNumber)
End Function))
Continue Do
End If
numbers(count) = randomNumber
count += 1
Loop Until count = 4
Заявление «Этот метод вернет случайное число, которое = = Min и <= Max» неверно. Он должен прочитать «Этот метод вернет случайное число, которое равно = = и ** <** Макс.». – Enigmativity
Это не компилируется сейчас. – Enigmativity
Это было очищено и протестировано. Вероятно, мне следовало бы ответить с рабочим кодом, но я подумал, что дам ему куда-нибудь начать. – Patrick
Там очень простой способ, не прибегая к петлям.
Попробуйте этот код:
Dim rnd As System.Random = New System.Random()
Dim numbers As Integer() = _
Enumerable.Range(1, 10).OrderBy(Function (n) rnd.Next()).Take(4).ToArray()
Я получаю такой результат с этим кодом:
8, 3, 2, 6
Вы можете изменить .Range(1, 10)
к выберите любой диапазон номеров, который вам нравится, и .Take(4)
, чтобы брать только столько чисел, сколько хотите.
Если вы хотите сделать это с петлей, то здесь довольно эффективный способ:
Dim rnd As System.Random = New System.Random()
Dim pallet As New List(Of Integer)
For i = 1 To 10
pallet.Add(i)
Next
Dim selected = New List(Of Integer)()
For i = 0 To 3
Dim j = rnd.Next(0, pallet.Count)
selected.Add(pallet(j))
pallet.RemoveAt(j)
Next
- 1. Как завершить эту программу?
- 2. Как решить эту программу?
- 3. Как запустить эту программу?
- 4. Как отлаживать эту программу?
- 5. Как написать эту программу?
- 6. Как заполнить эту программу
- 7. Как исправить эту программу?
- 8. Как упростить эту программу?
- 9. Как открыть эту программу?
- 10. Как упростить эту программу
- 11. Как протестировать эту программу
- 12. Как ускорить эту программу?
- 13. Как скомпилировать эту программу?
- 14. Как декодировать эту программу?
- 15. Как проследить эту рекурсивную программу
- 16. Как продолжить эту программу python
- 17. Как зацикливать эту простую программу?
- 18. Как приостановить эту программу opengl?
- 19. Как мне выполнить эту программу?
- 20. Как исправить эту программу javascript?
- 21. Как оптимизировать эту программу Haskell?
- 22. Как запустить эту программу Python
- 23. Как исправить эту программу? (EDITED)
- 24. Как написать эту программу сборки?
- 25. как закончить эту программу? (javascript)
- 26. Как исправить эту программу python?
- 27. Как зацикливать эту криптографическую программу
- 28. Как сконденсировать эту java-программу?
- 29. Объясните эту программу Python
- 30. Пожалуйста, объясните эту программу?
Смотрите мой ответ здесь (VBA) http://stackoverflow.com/questions/34862663/how -can-i-check-in-visual-basic-if-string-have-duplicate-symbols/34866579 # 34866579 – Jules
Этот код вообще не помог –
В вашем вопросе есть тег vba, этот ответ находится в формате vba. Вы можете изменить логику для работы в vb.net. – Jules