Replace slow array shuffle function with KK's Array Shuffle Plus

KK's code is more efficient and you can enter how many times you want to shuffle.
This commit is contained in:
worldwidesorrow
2020-01-09 15:55:23 -06:00
committed by GitHub
parent 36cd8a0abc
commit 0f3f522e25

View File

@@ -1,13 +1,17 @@
private ["_ar","_rand_array","_rand"]; //Killzone Kid Array Shuffle Plus
_ar = _this; //Usage: array = [array, shuffle count] call fn_shuffleArray;
_rand_array = [];
while {count _ar > 0} do {
_rand = (count _ar);
_rand = floor (random _rand);
_rand_array set [count _rand_array, _ar select _rand];
_ar set [_rand, "randarray_del"];
_ar = _ar - ["randarray_del"];
sleep 0.001;
};
_rand_array private ["_arr","_cnt","_el1","_indx","_el2"];
_arr = _this select 0;
_cnt = count _arr - 1;
if (_cnt < 1) exitWith {_arr;}; // add count check to prevent errors.
_el1 = _arr select _cnt;
_arr resize _cnt;
for "_i" from 1 to (_this select 1) do {
_indx = floor random _cnt;
_el2 = _arr select _indx;
_arr set [_indx, _el1];
_el1 = _el2;
};
_arr set [_cnt, _el1];
_arr