random —— 生成伪随机数,该模块为各种分布实现伪随机数生成器。我们来看看random模块常用的几个函数的介绍:
一、针对整数的方法:
random.randrange(stop)
random.randrange(start, stop[, step])
等同于choice(range(start, stop, step)),但不实际创建range对象。
>>> import random >>> print(random.randrange(4)) #返回0~3的随机整数 1 >>> print(random.randrange(1, 9)) #返回1~8的随机整数 8 >>> print(random.randrange(1, 11, 2)) #返回1~10的随机奇数 3
random.randint(a, b)
返回一个随机整数N,a <= N <= b, 等同于randrange(a, b+1)。
>>> print(random.randint(1, 10)) #返回[1, 10]的随机整数 8 >>> print(random.randint(-10, -1)) #返回[-10, -1]的随机整数,不能写成random.randint(-1, -10) -5
二、针对序列的方法:
random.choice(seq)
从非空序列中返回一个随机元素,如果序列为空,则引发IndexError。
>>> print(random.choice('BHasdgiHUI1234')) #返回一个字符 I >>> print(random.choice(['apple', 'peach', 'pear'])) #返回列表中一个随机一个元素 pear >>> print(random.choice(('Bob', 'Jhon', 'Micheal'))) #返回元组中一个随机元素 Jhon
random.choices(population, weight=None, *, cum_weight=None, k=1)
从可替代的population序列中随机取出k个元素组成列表,返回该列表。weight是相对权重序列,cum_weight是累计权重,同时制定权重weight和累计权重cum_weight,会产生类型错误。
>>> print(random.choices(['red', 'yellow','green', 'blue', 'black', 'pink', 'purple', 'white'], k=4)) ['red', 'red', 'purple', 'black'] >>> print(random.choices(['apple', 'peach', 'pear'], [1, 2, 3], k=4)) ['pear', 'pear', 'pear', 'peach'] >>> print(random.choices(['apple', 'peach', 'pear'], [6, 12, 2], k=4)) ['peach', 'peach', 'pear', 'pear']
random.shuffle(x [,random])
重新排列序列(洗牌)
>>> seq = ['red1','yellow2','blue3', 'green4' ] >>> random.shuffle(seq) #列表重新排序 >>> print(seq) ['red1', 'blue3', 'green4', 'yellow2']
random.sample(population, k)
返回一个从序列population中随机抽取K个不重复的元素组成的新队列。用于不可替换的随机抽样。返回一个新的列表,不破坏原有列表。如果新队列的长度k大于原队列population的长度,则会引发ValueError错误。
>>> print(random.sample(['a', 'b', 'c', 'd', 'e', '1', '2', '3'], 2)) #列表中随机抽取2个元素组成新的列表 ['d', 'b'] >>> print(''.join(random.sample("ahoiNUAI483*4", 4))) UohI
三、真值分布:
random.random()
返回一个随机的浮点数,范围[0, 1)
>>> print(random.random()) 0.5867129667371662
random.uniform(a, b)
返回一个a和b之间的随机浮点数,如果a>b,则返回b和a之间的浮点数。a和b都可能出现在结果中。
>>> print(random.uniform(1, 10)) 5.961863773592117 >>> print(random.uniform(2,6)) 3.2723769810535543