Алгоритм очень простой - пробегаемся по всем элементам от первого до последнего и меняем текущий элемент со случайным элементом местами. Типа так:
fot (int i = 0; i < len; i++) { temp = a[i]; ri = rand(len); a[i] = a[ri]; a[ri] = temp; }
Или тебе именно на mql4 записать?
Типа так:
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; }
Огроооомное спасибо!!!!
Последнюю строку поправил, должно быть
a[rnd] = temp;
Принудительного преобразования типов в double в таком виде в MQL4 не помню (хотя ошибки компиляции нет).
Но оно уже и не обязательно, т.к. частное 32768.0 - уже double. Так что обе (double) в скобках можно убрать, деление все равно будет нецелочисленным.
Но оно уже и не обязательно, т.к. частное 32768.0 - уже double. Так что обе (double) в скобках можно убрать, деление все равно будет нецелочисленным.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования