А также:

OSCAT‎ > ‎Basic Library‎ > ‎

_ARRAY_SHUFFLE

Тип Функция : BOOL

Входы PT : Pointer (Указатель на массив)

SIZE : UINT (Размер массива)

Выходы BOOL (возвращает TRUE)


Функция _ARRAY_SHUFFLE переставляет элементы произвольного массива значений типа REAL случайным образом. При вызове функции передаются указатель на массив и его размер в байтах. В CoDeSys вызов выполняется следующим образом: _ARRAY_SHUFFLE(ADR(Array), SIZEOF(Array)), где Array - имя обрабатываемого массива. ADR() является стандартной функцией, которая возвращает указатель на массив, а SIZEOF() - стандартная функция, которая вычисляет размер массива. Передаваемый через указатель массив будет обработан непосредственно в памяти и по завершении функции доступен напрямую. Таким образом, функция _ARRAY_SHUFFLE изменяет содержимое массива.

Этот способ обработки массива является очень эффективным, поскольку не требует дополнительной памяти, и передаваемые значения не нужно копировать.

Если нужно обработать массив, который нельзя изменять, то до передачи указателя и вызова функции необходимо скопировать его во временный массив.

Пример: _ARRAY_SHUFFLE(ADR(bigarray), SIZEOF(bigarray))

Вызов функции _ARRAY_SHUFFLE может изменить массив следующим образом. Так как функция использует псевдослучайный алгоритм, результат каждый раз будет другим. Результаты нельзя воспроизвести даже путем перезапуска программы или контроллера.

Входной массив: (0,1,2,3,4,5,6,7,8,9)

Результат: (5,0,3,9,7,2,1,8,4,6)

Результат, однако, не повторяется. Функция возвращает новую последовательность после каждого вызова и даже после перезапуска.