Thaddy, I think that it is more instructive to guide the user to be able to create a solution based on his knowledge, than telling him to use a black-box procedure. In particular here where the "own" solution is so easy. RandomRange, however, cannot be understood without looking at the source code or reading the manual (and hoping that it is correct). The problem is: how is the second parameter handled? Is it excluded from the result set (as in Random(n)), or is it included as in Math.InRange(n1, n2) or Math.EnsureRange(n, n1, n2)?