As other answers have noted, this is impossible; in particular, you start with a discrete distribution, where each outcome has a probability of $2^{-32}$. Now, if you take some function $f$ taking in such random outcomes and outputting an integer in the desired range, then it's clear that the probability of receiving some $n$ as the output equals $2^{-32}$ times the number of outcomes $x$ such that $f(x)=n$ - in particular, the probability is always a multiple of $2^{-32}$. Unfortunately, numbers like $\frac{1}3$ are not multiples of $2^{-32}$, so we can't get a uniform distribution on three numbers (be we can get a uniform distribution on $2^n$ outcomes for $n\leq 32$ just by truncating the number).
However, here's a standard and simple procedure to generate a random integer in $[1,N]$ given the capacity to generate a random one in $[1,M]$ for $M\geq N$. Your problem is easily under this class.
Suppose that $M=aN + b$ where $a$ is an integer and $b$ is positive and less than $N$ - that is, $b$ is the remainder of $M$ divided by $N$ and $a$ is the integer part of the quotient. Generate an integer $x$ in $[1,M]$. If it is less than or equal to $aN$, return the remainder of $x_0$ divided by $N$. Otherwise, generate another integer in $[1,M]$ and test if it is lower than $aN$. Repeat indefinitely.
That is, to generate a random number, you throw out certain results and try again. For instance, if we wanted to generate a random integer in $[1,2]$ given the ability to do so in $[1,3]$, we simply keep finding random numbers in $[1,3]$, until one of them is either $1$ or $2$. This is clearly a uniform distribution. In the very worst case, the above method throws out about $\frac{1}2$ of the results generated. However, if you are generating numbers in $[1,2^{32}]$ and seeking a random number between $1$ and a million, you will accept almost every (e.g. about 99.97%) random number you get, so there's no great loss in efficiency.