\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}