\begin{algorithm}
        \caption{Permute By Cyclic}
        \begin{algorithmic}
        \INPUT an array $A$ of length $n$
        \OUTPUT a uniform random permutation of $A$
        \STATE let $B[1..n]$ be a new array
        \STATE $offset =$ \CALL{Random}{$1, n$}
        \FOR{$i = 1$ \TO $n$}
            \STATE $dest = i + offset$
            \IF{$dest > n$}
                \STATE $dest = dest - n$
            \ENDIF
            \STATE $B[dest] = A[i]$
        \ENDFOR
        \RETURN $B$
        \end{algorithmic}
        \end{algorithm}