Array mischen

Hallo zusammen,

ich habe ein array von integers:

dim matrix(144) as integer

ich habe allen 144 elementen einen Wert zugeordnet und möchte diese nun zufällig anordnen, also durchmischen.
Per Google habe ich das hier gefunden: http://vb-tec.de/arrmix.htm
Daraus werde ich aber nicht ganz schlau. Was müsste ich konkret mit meiner Variablen machen?

Vielen dank,
Jan

Hallo Jan,

ich habe ein array von integers:
dim matrix(144) as integer
ich habe allen 144 elementen einen Wert zugeordnet und möchte
diese nun zufällig anordnen, also durchmischen.

es sind 145 Elemente.

Per Google habe ich das hier gefunden:
http://vb-tec.de/arrmix.htm
Daraus werde ich aber nicht ganz schlau. Was müsste ich
konkret mit meiner Variablen machen?

Versuchen das zu machen was da steht :smile:

z.B. so:

Option Explicit
'
Sub Test()
Dim Matrix(144), N, Neu
For N = 0 To 144
 Matrix(N) = N
Next N
Neu = RandomIndex(Matrix)
For N = 0 To 144
 MsgBox Neu(N)
Next N
End Sub
'
Public Function RandomIndex(ByRef anArray As Variant) As Variant 'As Long() 'VB6
 RandomIndex = RandomLongArray(UBound(anArray), LBound(anArray))
End Function
'
Public Function RandomLongArray(ByVal Max As Long, Optional ByVal Min As Long = 1, \_
 Optional ByVal Count As Long = 0) As Variant 'As Long() 'VB6
 Dim Range As Long
 Dim Longs() As Long
 Dim i As Long
 Dim j As Long
 Dim Item As Long
 'Array initialisieren:
 ReDim Longs(Min To Max)
 For i = Min To Max
 Longs(i) = i
 Next i
 'Array mischen:
 Range = Max - Min + 1
 For i = Min To Max - 1
 j = Int(Rnd \* Range) + i
 Item = Longs(j)
 Longs(j) = Longs(i)
 Longs(i) = Item
 Range = Range - 1
 Next i
 'Ergebnis zurückgeben:
 If Count \> 0 Then
 ReDim Preserve Longs(Min To Min + Count - 1)
 End If
 RandomLongArray = Longs
End Function

Gruß
Reinhard