Алгоритм перемешивания элементов массива на mql4

 
Кто знает, подкиньте, пожалуйста, вариант реализации алгоритма перемешивания элементов одномерного массива, реализованный на mql4.
 

Алгоритм очень простой - пробегаемся по всем элементам от первого до последнего и меняем текущий элемент со случайным элементом местами. Типа так:

fot (int i = 0; i < len; i++) { temp = a[i]; ri = rand(len); a[i] = a[ri]; a[ri] = temp; }

Или тебе именно на mql4 записать?

 
Лучше на mql, если не трудно=)
 

Типа так:

   double a[10]; // Сам одномерный массив; длина любая
   MathSrand(TimeLocal());
   int len = ArrayRange(a, 1); 
   for (int index = 0; index < len; index++)
   {
      double temp = a[index];
      int rnd = ((double)MathRand() * (double)len) / 32768.0;
      a[index] = a[rnd];
      a[rnd] = temp;
   }
 
Огроооомное спасибо!!!!
 
LenIFCHIK:
Огроооомное спасибо!!!!


Последнюю строку поправил, должно быть

a[rnd] = temp;
 

Принудительного преобразования типов в double в таком виде в MQL4 не помню (хотя ошибки компиляции нет).

Но оно уже и не обязательно, т.к. частное 32768.0 - уже double. Так что обе (double) в скобках можно убрать, деление все равно будет нецелочисленным.

 
Блин. Ну к инту же- а потом делением по остатку %.
Mathemat:

Но оно уже и не обязательно, т.к. частное 32768.0 - уже double. Так что обе (double) в скобках можно убрать, деление все равно будет нецелочисленным.

Там какая-то недокументированная особенность была- для "трейдеров, которые не программисты" )), типа || / &&, сильно удивительная- не помню какая. Поэтому лучше писать как wmlab.
Причина обращения: