1
$\begingroup$

Given some random number function rand, and some numbers $x$ and $y$, how do you find a random number $r$ such that $r\geq x \wedge r \leq y$?

Previously i've tried (and somewhat failed) with formulas like $ r = \text{rand()}\bmod \frac{x}{y} $ or $ r = \text{rand()}\bmod x + 1 $ or, given that $y>x$, $ r = (\text{rand()}\bmod (y-x))+x $ Is there a better or truer way to do this?

1 Answers 1

7

Let $x \lt y$. The usual pseudo-random number generators produce a number between $0$ and $1$. Multiply the result by $y-x$, and then add $x$.

This also works fine if $y \lt x$.

  • 0
    There should be a closing parenthesis just before the $=$ sign, a few characters before "This means."2012-11-19