Как расположить элементы массива в случайном порядке

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

Private Sub Command1_Click()
Dim a(10) As Integer
' Заполняем массив a значениями
For i = 0 To 10
a(i) = i
Next
' Сортируем массив в произвольном порядке
RandomSort a
' Выводим отсортированные элементы массива
For i = 0 To 10
MsgBox a(i)
Next
End Sub

Private Sub RandomSort(m())
Dim n As Integer
Dim i As Integer, j As Integer
Dim mRnd() As Integer
' Получем количество элементов в массиве m
n = UBound(m)
' Изменяем размерность массива mRnd
' в соответствии с размерностью исходного массива m
ReDim mRnd(n)
' Запускаем генератор случайных чисел
Randomize Timer
' Заполняем массив mRnd произвольными значениями
For i = 0 To n
mRnd(i) = Int(Rnd * 10000)
Next
' Сортируем массив mRnd по возрастанию,
' одновременно меняя местами элементы массива m
For i = 0 To n - 1
For j = i + 1 To n
If mRnd(j) < mRnd(i) Then Swap mRnd(j), mRnd(i): Swap m(j), m(i)
Next
Next
End Sub

' Процедура, меняющая местами переменные a1 и a2
Private Sub Swap(a1, a2)
Dim c
c = a1
a1 = a2
a2 = c
End Sub
Hosted by uCoz