Как перемешать символьный массив произвольным образом?

Как перемешать символьный массив произвольным образом?
Знаю что можно как - то сделать при помощи random, но не знаю как.

  • меняй местами произвольные его элементы. Порядковый номер элемента получай при помощи рэндома. Чем боольше итераций тем произвольней результат.
  • procedure Swap(var x, y: integer);
    var
    t: integer;
    begin
    t := x; x := y; y := t;
    end;

    procedure RandomShuffle(var a: array of integer; size: integer);
    var
    c: integer;
    begin
    for c := size - 1 downto 1 do Swap(a[c], a[random(c + 1)]);
    end;

    var
    a: array [1..10] of integer;
    c: integer;
    begin
    randomize;
    for c := 1 to 10 do a[c] := c;
    for c := 1 to 10 do write(a[c], ' ');
    writeln;
    RandomShuffle(a, 10);
    for c := 1 to 10 do write(a[c], ' ');
    writeln;
    end.

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