python常用模块之random模块
random模块
random模块是处理随机事件中重要的模块,随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。例如模拟掷骰子,随机生成坐标,爬虫使用随机UserAgent头等,以下是个人对random模块常用方法的学习使用小结。
random模块常用方法
seed(a=None, version=2)
功能: 改变随机数生成器的种子seed。
参数: a: 种子值,如果是None, 使用当前系统时间戳, 如果是int,则直接使用,如果是str,bytes,bytearray则先转换为int,再使用其所有位。 version: 默认为版本二,版本一则使用 a对象的hash()
import random >>> random.seed(10) # 控制随机数种子 >>> random.randint(1, 100) 74 >>> random.randint(1, 100) 5 >>> random.seed(10) # 两次生成的整数相同 >>> random.randint(1, 100) 74 >>> random.randint(1, 100) 5
randrange(start, stop[, step]) | randrange(stop)
功能: 生成一个指定范围内的随机整数(相当于随机从range对象随机取数)
参数: start: 开始位置 stop:结束位置 step:间隔 默认为1, 可以只指定stop
>>> random.randrange(5) # 取5以内的随机数 3 >>> random.randrange(0, 100, 7) # 取随机的100以内的7的倍数 63
randint(a, b)
功能: 生成一个[a, b]区间内的随机整数(相当于randrange(a, b+1))
参数: a,b 分别是左右区间
>>> random.randint(1, 3) 1 >>> random.randint(1, 3) 2
random.choice(seq)
功能: 随机返回一个序列的值 , 如果序列为空,抛出IndexError异常
参数: seq: 一个序列
>>> random.choice([1, 2, 3, 7]) 7 >>> random.choice("abcdefg") 'g'
shuffle(x[, random])
功能: 随机打乱一个序列
参数: x:序列 random: 可选参数: 一个生成0-1的随机浮点数的没有参数的函数,默认是random()
>>> l = [1, 2, 3, 4] >>> random.shuffle(l) >>> l [4, 2, 3, 1] >>> random.shuffle(l) >>> l [2, 1, 4, 3]
sample(population, k)
功能: 从一个群体序列中抽样k份, 返回长度为k的列表, 如果k大于群体总数,则会报ValueError异常
参数: population: 待抽样的序列或集合 k抽样样本个数
>>> random.sample('aaaabc', 3) ['b', 'a', 'a'] >>> random.sample(range(1000000), 20) # 抽取大样本用range [896664, 84881, 156959, 403092, 594789, 991496, 392350, 957310, 630513, 156931, 118400, 813184, 810694, 101298, 462999, 174445, 846672, 200200, 993729, 365618]
random()
功能: 返回[0, 1)的小数
参数: 无
>>> random.random() 0.4332315025514858 >>> random.random() 0.41408083174830124
uniform(a, b)
功能: 生成a-b之间的实数
参数: 区间范围
>>> random.uniform(3, 1) 2.3048574875583663 >>> random.uniform(0, 1) 0.4347105489944344
random小练习
生成随机四位数验证码
随机4位数字
>>> ''.join((str(random.randrange(10)) for i in range(4))) '8958' >>> str(random.randrange(10000)) '6354'
随机字母加数字
>>> l = [chr(x) for x in range(65, 91)] + [chr(x) for x in range(97, 123)] + [str(x) for x in range(10)] >>> ''.join((random.choice(l) for i in range(4))) 'ciED' >>> ''.join((random.choice(l) for i in range(4))) 'md1z' >>> ''.join((random.choice(l) for i in range(4))) 'fId3'

浙公网安备 33010602011771号