生成给定整数倍数的随机整数

时间:2019-03-16 13:59:50

标签: python

我有一个像这样的随机函数:

Class Ville:
    timestamp = 0
    def __init__(self, nb_de_cyclistes, Prestataire):
        self.timestamp =0

    def reveil(self):
        self.timestamp += 1
        list(map(lambda cycliste :cycliste.avancer(self.timestamp), self.cyclistes))

    def faire_avancer(cycliste):
        cycliste.avancer(Ville.timestamp)

    def reveil_multiproc(self, n_jobs=1):
        import multiprocessing
        self.timestamp += 1
        Ville.timestamp = self.timestamp
        pool            = multiprocessing.Pool(n_jobs)
        pool.map(Ville.faire_avancer, self.cyclistes)

有了这个,我可以得到a和b之间的随机数。

现在,我想要a和b之间的随机数是5的倍数,如下所示:

def rand_int(a, b): res = random.random() diff = b - a res = a + (diff * res) return int(res) 输出应为以下之一:15,20,25,30 ... 85,90,95,100

2 个答案:

答案 0 :(得分:0)

:: EDIT :: 问题被重新表述,使我原来的答案是错误的。

要获取12到100之间的随机数,但输出会四舍五入到最接近的5。请注意,def mode_liste (lis_resultat): """lis_resultat: sorted list""" d=0 e=0 for i in range (len(lis_resultat)-1,1,-1): if (lis_resultat[i]==lis_resultat[i-1]): e+=1 else: if (d<=e): res=lis_resultat[i-1] d=e e=0 return res 等于10。原始示例将“ 15”列为第一个示例输出。

round(12/5)*5

答案 1 :(得分:0)

这应该有效:

a,b = 11, 27
k = 5

import random
from math import floor, ceil

random.randrange(k*ceil(a/k),k + (k*floor(b/k)),k) for i in range(c)

通过使用以下表达式生成100个数字来对此进行测试:

l = [random.randrange(k*ceil(a/k),k + (k*floor(b/k)),k) for i in range(100)]
print (l)

输出:

  

[15、15、20、15、20、20、15、15、15、25、25、15、15、15、25、25、15   25、15、25、15、25、15、20、15、20、25、20、15、15、25、15、15、15,   15、20、15、15、25、25、25、25、15、20、20、15、25、20、25、15、15   25、25、20、15、25、15、20、25、15、25、25、25、15、25、15、25、25,   25、25、20、20、15、20、20、15、15、15、20、25、20、15、25、25、15   20、20、20、15、15、15、20、25、15、25、20、20、25、25、15、25]