随机数据在写python脚本的时候经常用到,比如随机生成0和1来控制逻辑,或者从列表中随机选择一个Elements(其实抽奖程序类似,就是中奖用户是从公司老板中随机抽取的)等等。本文将帮助大家梳理一下python中random模块使用比较频繁的方法。常用方法为了方便大家理解和记忆,对方法进行分类:整数使用函数random.randrange(stop)随机返回[0,stop-1]之间的整数random.randrange(start,stop,step)返回[start,stop-1]之间的整数。step是一个增量计数,列个公式就可以理解:(随机产生的值—start)%step=0random.randint(start,stop)随机返回一个介于[start,stop]之间的整数random.getrandbits(bits)usesRandomly返回[0,2bits-1]之间的整数为随机位对应的整数。最后需要注意一点:上述方法也可以随机返回负数,只要参数继承负数即可。下面是一个例子:#Integerbetween0-2print(random.randrange(3))#Integerbetween1-299,growthbaseis5print(random.randrange(1,300,5))#1Integerbetween-20print(random.randint(1,20))#-3和0之间的负数print(random.randint(-3,0))#-3和-1之间的负数print(random.randrange(-3,0))#返回1~2-1之间的数print(random.randrange(1))#返回1~2之间的数的32次方-1print(random.getrandbits(32))##返回值01170-103150567570浮点函数random.random()随机返回[0,1)之间的浮点数random.uniform(a,b)随机返回[a和b)之间的浮点数实际上符合上述两种方法的数学随机分布模式。指点数字时,可以少犹豫。#1.生成0-1之间的随机浮点数print(random.random())#2.生成a-b之间的随机浮点数print(random.uniform(10,500))print(random.uniform(40,10))#返回值0.7833926665736892150.280587594386939.88236257691508序列函数顾名思义,序列函数的随机对象是一个列表。random.choice(list)从列表中返回一个随机元素。random.choices(list,weights,k)相当于random.choice()的升级版。weights就是权重,为list的每个元素设置weights来改变随机概率。k是要返回多少个元素。请注意,此方法返回一个列表。random.sample(population,k)是3.6的新特性,用于从population列表中返回一个随机的非重复样本。前面提到了抽奖,其实如果你想做一个抽奖系统,可以用这个方法改造一下。random.shuffle(list)随机打乱list列表中的元素。对应的例子如下:#从给定的序列中随机选择一个元素print(random.choice([1,2,3,4,5]))#random.choice的升级版,也可以指定一个元素对应于print(random.choices([1,2,3,4,5],[10,15,45,50,60]))的权重#Shuffleasequence,python3.6的新方法list_test=[2,3,4,5,6]random.shuffle(list_test)print(list_test)#采样,从列表中随机选择若干个元素print(random.sample([1,2,3,4,5,6,7],k=3))#返回值3[5][6,3,4,2,5][6,1,7]控制随机行为random.seed(a=None,version=2)设置随机种子值,种子值怎么理解?大家可以想到一句话:“种瓜得瓜,种豆得豆”,同样的种子价值,也会有同样的种植效果。如果现在是两次随机,在调用random随机生成数据之前,将random.seed设置为相同的值,那么随机生成的值将是相同的。random.getstate()非常简单,它返回随机生成器的当前状态。random.setstate(state)这个用来设置随机的状态。setstate和getstate方法结合使用来恢复random的状态。对应的例子如下:#验证种子random.seed(1)print(random.randrange(1000))random.seed(1)print(random.randrange(1000))#验证随机状态state=random.getstate()print(random.randrange(1000))print(random.randrange(1000))random.setstate(state)print(random.randrange(1000))#返回结果137137582867582下面列出的方法数学分配模式与数学分配的概念有关。说实话,大学里学的相关东西都还给了老师。查了资料,了解了不同数学分布的知识,虽然有点难懂,但其实对我们还是有用的。对于人们来说,只需要了解它可以按照一定的规则随机返回浮点数即可。random.triangular(low,high,mode)返回一个具有三角概率分布的随机数random.betavariate(alpha,beta)返回一个介于0和1之间的随机数,具有beta概率分布random.expovariate()使用指数分布返回一个随机数random.gammavariate(alpha,beta)返回一个概率分布为伽马分布的随机数random.gauss(mu,sigma)返回一个概率分布为高斯分布的随机数random.lognormvariate(mu,sigma)与lognormal分布的概率分布返回随机数random.normalvariate(mu,sigma)和高斯分布一样random.vonmisesvariate(mu,kappa)返回随机数random.paretovariate(alpha)和帕累托(Pareto)从概率分布vonMisesdistribution分布的概率分布返回一个随机数random.weibullvariate(alpha,beta)返回一个随机数与威布尔(Weibull)分布的概率分布其实不需要完全记住上面的方法。对应的方法可以在文档中找到。综上所述,random模块高频使用的方法上面已经为大家整理好了。比较简单。如果您有任何问题,请留言。关注【公众号:软件测试布道师】,回复【python】,即可获得【python自动化与编程实践资料】
