我如何在python中生成 随机的随机整数但是落入乘法表(次表)范围se和由我指定的值确定?
示例。我想要生成10到100之间的随机数,但它应该是7的倍数。可能的返回值可以是14, 28, 49, 77
等。
该函数的模型可能如下所示:
def gen_random(f, min, max):
#generate random number between min and max that is a multiple of fac
Python的random
模块是否能够执行此操作?
答案 0 :(得分:9)
为什么不生成一个fac
的乘数来给出你的界限之间的数字?
import math
import random
def rand_multiple(fac, a, b):
"""Returns a random multiple of fac between a and b."""
min_multi = math.ceil(float(a) / fac)
max_multi = math.floor(float(b) / fac)
return fac * random.randint(min_multi, max_multi)
答案 1 :(得分:3)
函数randrange有一个step参数,所以如果你可以这样做:
>>> min = 7
>>> max = 14 + 1
>>> randrange(min, max, 7)
14
>>> randrange(min, max, 7)
7
但:
>>> min = 6
>>> randrange(min, max, 7)
13
所以你需要做这样的事情:
min += 7 - min % 7
max = max - max % 7 + 1
答案 2 :(得分:1)
您需要手动检查factor参数;随机函数不处理。您可以在min / f和max / f之间生成一个数字,然后乘以f作为最终结果。