title: Random number in range 0 to n
body: <p>Given a function R which produces true random 32 bit numbers, I would like a function that returns random integers in the range 0 to n, where n is arbitrary (less than 2^32). </p>
  
  <p>The function must produce all values 0 to n with equal probability.</p>
  
  <p>I would like a function that executes in constant time with no if statements or loops, so something like the Java Random.nextInt(n) function is out.</p>
  
  <p>I suspect that a simple modulus will not do the job unless n is a power of 2 -- am I right?</p>
  
  <hr>
  
  <p>I have accepted Jason's answer, despite it requiring a loop of undetermined duration, since it appears to be the best method to use in practice and essentially answers my question. However I am still interested in any algorithms (even if less efficient) which would be deterministic in nature and be guaranteed to terminate, such as Mark Byers has pointed to.</p>