Ben*_*enn 1 python random list python-3.x
我正在尝试创建一个数字从 0 到 10,000(含)的随机列表。我需要得到一个只有偶数的列表。
这是我的代码:
from random import randint
def test(mini, maxx, quantity):
myl = [randint(mini, maxx) * 2 for i in range(quantity)]
return myl
print(test(0, 10000, 4))
Run Code Online (Sandbox Code Playgroud)
如果我尝试这样做,我会超过 10000 的范围(因为* 2)。
另外,我只能使用该randint功能。
我如何达到预期的结果?
生成从 0 到 5000 的随机数并乘以 2。如果您想确保正确的结果,您必须在正确的范围内进行操作,并且包括您的界限都包含在内的事实:
def test(start, stop, n):
start, stop = min(start, stop), max(start, stop)
realmax = (stop - start + 2) // 2 - 1 # Range from zero, inclusive
realstart = start + (start % 2) # Offset to ensure even result
return [randint(0, realmax) * 2 + realstart for _ in range(n)]
Run Code Online (Sandbox Code Playgroud)
如果你想知道(stop - start + 2) // 2 - 1从哪里来。
stop - start + 1 是包含范围的大小。+ 1是必要的,以// 2作为天花板分隔而不是地板分隔。以范围 12-14 为例,您可能希望生成两个选项,而不是一个。// 2 只是将范围减半,但将其保留为整数。- 1将范围大小转换为范围边界,因为randint它包含并且我们从零开始。