ник: Lukas
Но и тут не без.
Статистика:
Из 10000 вызовов, Shuffle возвращает в среднем 1186 уникальных значений, а Arr16 2069.
Попробуем так:
Public Function Col16() As Variant
Dim Col As Collection
Dim i As Integer
Dim It As Integer
Dim Arr(0 To 15) As Integer
Set Col = New Collection
For i = 0 To 15
Col.Add CInt(i), CStr(i)
Next i
Randomize
For i = 0 To 15
It = Rnd() * (Col.Count - 1) + 1
Arr(i) = Col.Item(It)
Col.Remove It
Next
Set Col = Nothing
Col16 = Arr
End Function
|
Работает в 2 раза быстрее Arr16, и выдает в среднем 2475 уникальных значений на 10000 вызовов.