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