\begin{algorithm}
\caption{Random Sample}
\begin{algorithmic}
\INPUT an integer $m$ and an integer $n$ , where $0 \le m \le n$
\OUTPUT a random subset of $\{1, 2, 3, \cdots, n\}$ with size $m$
\PROCEDURE{RandomSample}{$m, n$}
\IF{$m = 0$}
\RETURN $\emptyset$
\ENDIF
\STATE $S =$ \CALL{RandomSample}{$m - 1, n - 1$}
\STATE $i =$ \CALL{Random}{$1, n$}
\IF{$i \in S$}
\STATE $S = S \cup \{n\}$
\ELSE
\STATE $S = S \cup \{i\}$
\ENDIF
\RETURN $S$
\ENDPROCEDURE
\end{algorithmic}
\end{algorithm}