A Uniform Generation procedure for $NP$ is an
algorithm which given any input in a fixed NP-language, outputs a uniformly
distributed NP-witness for membership of the input in the language.
We present a Uniform Generation procedure for $NP$ that runs in probabilistic
polynomial-time with an NP-oracle. This improves upon results of Jerrum,
Valiant and Vazirani, which either require a $\Sigma^P_2$ oracle or obtain only
almost uniform generation. Our procedure utilizes ideas originating in the
works of Sipser, Stockmeyer, and Jerrum, Valiant and Vazirani