擅长:python、mysql、java
<p>这使用的逻辑与您的几乎完全相同,但不会超出范围。我明白这只是为了学习,但我觉得有必要说我不会用这个来代替<code>random</code>。无论如何,此代码不会崩溃:</p>
<pre><code>from time import time
def randomNum(x, y):
#ensures the function is called properly, you can handle this however you'd like to
assert y > x and x > 0
choices = [i for i in range(x, y + 1)]
t = time()
#ensures that the number is less than y
num = int(str(t-int(t))[2:])%y
xnum = [i for i in range(num, y)]
#ensures that you don't get out of bounds for choices
ynum = [choices[i%(y+1-x)] for i in xnum]
#same as above + ensure you don't go out of bounds for ynum, too
znum = ynum[choices[(num-1)%(y-x)]%(y-num)]
ret = choices[znum%(y+1-x)]
return ret
</code></pre>
<p><strong>NB</strong>:<br/>
虽然这不会崩溃,但它不会给出伪随机数,也就是说,如果你输入<code>randomNum(1,10)</code>,你将无法生成2、3或5。在</p>