2

Pythonでランダムな整数を生成するにはどうすればよいですか?ランダムです、それ自体は九九(九九)の範囲に含まれ、指定した値によって決定されますか

例。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モジュールはこれを行うことができますか?

4

3 に答える 3

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)
于 2012-08-05T19:12:24.293 に答える
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
于 2012-08-05T19:17:45.073 に答える
1

factorパラメーターを手動で確認する必要があります。ランダム関数はそれを処理しません。min/fとmax/fの間の数値を生成し、最終結果としてfを掛けることができます。

于 2012-08-05T19:12:10.857 に答える