生成一个落入多个范围的随机数

时间:2012-08-05 19:10:21

标签: python random

我如何在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模块是否能够执行此操作?

3 个答案:

答案 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作为最终结果。