Я новичок в этом. Я хочу создать массив из 16 элементов. Предположим, что мой массив является ReDim arr (15) как Integer, и в этом массиве я хочу поместить числа от 1 до 16, но скремблирован, например arr (0) = 3, arr (5) = 8 и т. Д.Как создать массив со случайными числами?
ответ
Вот некоторые очень ленивый код:
Dim arr(15) As Integer
Dim i As Integer, j As Integer
i = 1
Do
j = Int(16 * Rnd)
If arr(j) = 0 Then
arr(j) = i
i = i + 1
End If
Loop Until i = 17
Rnd генерирует single
от 0 до 1, умножить на 16 и полосы десятичной части с Int
, и это даст вам случайное число от 0 до 15 .
Это неэффективно, я бы не использовал его в производстве, но он выполнит эту работу.
Надеюсь, это поможет!
Нет, это не так, я думал об этом в этом коде. Если функция rnd возвращает значение, которое уже было использовано, оно просто перезапустит цикл. –
Вы правы, я прошу прощения и удалю свой комментарий. Я пропустил заявление if. Это отлично подходит для запрошенного небольшого подмножества. Мне было бы интересно узнать среднее число циклов, чтобы они были заполнены. По разногласиям есть вероятность бесконечного цикла, если подмножество получилось большим. Это не то, что было задано, и эта небольшая часть подмножества не имела бы такого риска. –
Да, как я уже сказал, это не очень хороший код, но он выполнит эту работу, и вы только собираетесь использовать его для небольших наборов. Я побежал его 500 раз, и потребовалось в среднем 35 циклов, но все 500 заняли меньше секунды, поэтому я не слишком волнуюсь. Если бы это был код для серьезного производства, я бы написал его правильно. –
Дайте этому попытку:
Sub MAIN()
Dim ary(1 To 16) As Variant
Dim i As Long, msg As String
For i = 1 To 16
ary(i) = i
Next i
Call Shuffle(ary)
msg = ""
For i = 1 To 16
msg = msg & vbCrLf & ary(i)
Next i
MsgBox msg
End Sub
Sub Shuffle(InOut() As Variant)
Dim HowMany As Long, i As Long, J As Long
Dim tempF As Double, temp As Variant
Hi = UBound(InOut)
Low = LBound(InOut)
ReDim Helper(Low To Hi) As Double
Randomize
For i = Low To Hi
Helper(i) = Rnd
Next i
J = (Hi - Low + 1) \ 2
Do While J > 0
For i = Low To Hi - J
If Helper(i) > Helper(i + J) Then
tempF = Helper(i)
Helper(i) = Helper(i + J)
Helper(i + J) = tempF
temp = InOut(i)
InOut(i) = InOut(i + J)
InOut(i + J) = temp
End If
Next i
For i = Hi - J To Low Step -1
If Helper(i) > Helper(i + J) Then
tempF = Helper(i)
Helper(i) = Helper(i + J)
Helper(i + J) = tempF
temp = InOut(i)
InOut(i) = InOut(i + J)
InOut(i + J) = temp
End If
Next i
J = J \ 2
Loop
End Sub
- 1. создать dataframe со случайными числами
- 2. Заполните массив случайными числами
- 3. 2d Массив в C# со случайными числами
- 4. Статистика со случайными числами
- 5. Рекурсия со случайными числами
- 6. заполнить массив случайными числами
- 7. Боевой симулятор со случайными числами
- 8. Работа со случайными целыми числами
- 9. PHP математика со случайными числами со случайными математическими символами
- 10. Как рандомизировать массив со случайными числами из crypto.getRandomValues?
- 11. Генерировать массив с уникальными случайными числами
- 12. Как создать цикл 1M со случайными числами> 100000
- 13. Как создать матрицу со случайными числами с помощью typedef struct?
- 14. Как работает двухфакторная аутентификация со случайными числами?
- 15. Как рассчитать окружность со случайными числами?
- 16. Как создать массив с «n» случайными целыми числами?
- 17. Петля со случайными числами, кроме середины
- 18. Связанный список со случайными целыми числами C++
- 19. Вариант проблем со случайными числами в C#
- 20. Инициализировать массив со случайными числами и сортировкой пузырьков
- 21. Запуская массив со случайными числами/ошибкой с пользовательской функцией
- 22. Создать список списка Python со случайными числами и длиной
- 23. Заполнить вектор случайными числами
- 24. Массив с пользовательским размером, заполненным случайными числами
- 25. Удаление строк со случайными числами внутри
- 26. Попытка сделать цикл for со случайными числами?
- 27. Making таблица со случайными цветными числами
- 28. Матричное умножение со случайными числами больше 1000
- 29. Генерировать случайные уравнения со случайными числами
- 30. Работа со случайными числами в php?
'обр (15)' дает вам только 15 элементов. – findwindow
Итак ... вы что-то пробовали –
'arr (15)' (aka 'arr (от 0 до 15)') дает 16 элементов. – Jeeped