Ich hoffe mal, das gibt's nicht schon, hier die Funktion _ArrayShuffle.
Funktionsweise:
Es wird ein Array übergeben, was mit dem Fisher-Yates-Algorithmus gemischt wird.
UDF
;===============================================================================
;
; Function Name: _ArrayShuffle($aArray)
; Description:: Shuffles an array with the Fisher-Yates shuffle
; Parameter(s): $aArray : The Array to shuffle
; Return Value(s): Sucess: Returns True
; Failure: Doesn't return anything
; Author(s): L3viathan2142 (l3viathan2142.de)
;
;===============================================================================
;
Func _ArrayShuffle(ByRef $aArray)
$n=UBound($aArray)-1
while $n > 1
$k = random(0,$n-1,1)
$tmp = $aArray[$n];
$aArray[$n] = $aArray[$k];
$aArray[$k] = $tmp;
$n-=1
WEnd
Return True
EndFunc
Beispiel
#include <Array.au3>
#include "_ArrayShuffle.au3"
Dim $test[19] = [4123,51235,423,432,5,2354,234,234523,432,43,4,23,65,546,547,42,3423,4235,4325]
_ArrayDisplay($test)
_ArrayShuffle($test)
_ArrayDisplay($test)
Es geht natürlich mit allen Datentypen, nicht nur mit Integern. Die UDF funktioniert nur mit 1D-Arrays.