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