random库是Python3中产生随机数的标准库,包括了基本随机数函数seed()、random()以及一些扩展的随机数函数。
首先看下Random类的原型:class Random(_random.Random),继承自内置类_random,因此Random类中拥有了基础的随机数函数random()。下面来一一介绍下各个函数的涵义以及用法。
使用random裤需要引入random包
#! /usr/bin/env python
import random
1.random()
random-> x in the interval [0, 1):产生一个区间在[0,1)内的随机数
print(random.random())
2.seed()
seed()->设置随机数生成器的种子,默认为系统时间,当种子相同时将产生相同的随机数。
random.seed(100)
print(random.random())
random.seed(100)
print(random.random())
# 0.1456692551041303
# 0.1456692551041303
3.randrange()
randrange()-> Choose a random item from range(start, stop[, step]):生成一个在区间[a,b)之间以step为步长的随机整数,即在[start,start+step*1,start+step*2,...,start+step*i,stop)之间随机一个整数
print(random.randrange(12,100,5))
print(random.randrange(12,100,5))
print(random.randrange(12,100,5))
# 82
# 37
# 72
4.randint()
randint()->Return random integer in range [a, b], including both end points.:生成一个在闭区间[a,b]之间的随机整数
print(random.randint(1,10))
print(random.randint(1,10))
print(random.randint(1,10))
# 6
# 7
# 9
5.choice()
choice()->Choose a random element from a non-empty sequence.:在一个非空序列中随机一个元素.
import string
print(random.choice(string.ascii_letters))
print(random.choice(string.ascii_letters))
print(random.choice(string.ascii_letters))
# Z
# h
# I
6.shuffle()
shuffle()->Shuffle list x in place, and return None.:将列表重新排序,将序列重排序,修改原序列,没有返回值。只能用于列表。
seq=[1,2,3,4,5,6,7,8,9]
print(id(seq))
random.shuffle(seq)
print(id(seq))
print(seq)
# 35417424
# 35417424
# [8, 7, 5, 1, 3, 4, 6, 9, 2]
7.sample()
sample()->Chooses k unique random elements from a population sequence or set.:从指定序列中获取指定长度的元素并随机排序,sample函数不会修改原有的序列。
list1=[1,2,3,4,5]
tuple2=(1,2,3,4,5)
str3="12345"
print(random.sample(list1,3))
print(random.sample(tuple2,3))
print(random.sample(str3,3))
# [3, 2, 4]
# [2, 5, 1]
# ['2', '3', '5']
8.choices()
choices()->Return a k sized list of population elements chosen with replacement:根据列表中各个元素的随机概率,获取列表中的k个数据。函数原型为 choices(self, population, weights=None, *, cum_weights=None, k=1),各个参数涵义:
population:给定的列表序列
weights:population序列中各个元素随机过程中的概率
cum_weights:population序列中各个元素的累计权重列表,元素个数必须与population个数相同
weights与cum_weights不能同时都赋值
print(random.choices([1, 2, 3, 4, 5], [1, 5, 1, 10, 11], k=2))
# 元素序列 : 1 2 3 4 5
# 产生概率 : 1 5 1 10 11
# 随机序列中的2个元素
#[4, 5]
9.uniform()
uniform()->Get a random number in the range [a, b) or [a, b] depending on rounding.:获取区间[a,b)或[a,b]中的一个随机数
print(random.uniform(1.24,3.1415))
print(random.uniform(1,6))
# 2.430950596925104
# 5.816578918504316
10其他函数
# 三角分布的随机数 random.triangular(low, high, mode)
# 高斯分布的随机数(稍快) random.gauss(mu, sigma)
# beta β分布的随机数 random.betavariate(alpha, beta)
# 指数分布的随机数 random.expovariate(lambd)
# 伽马分布的随机数 random.gammavariate(alpha, beta)
# 对数正态分布的随机数 random.lognormvariate(mu, sigma)
# 正态分布的随机数 random.normalvariate(mu, sigma)
# 冯米塞斯分布的随机数 random.vonmisesvariate(mu, kappa)
# 帕累托分布的随机数 random.paretovariate(alpha)
# 韦伯分布的随机数 random.weibullvariate(alpha, beta)