Random是Python的一个标准库,主要有三个功能生成随机数生成满足某种分布的序列
①生成简单随机数 ②进行随机排列 ③生成指定分布的随机数
1.导入random模块
>>> from random import *
初始化随机数生成器
seed(a=None, version=2):自定义随机数生成器的起始编号,将会返回相同值。
参数:
a:
1. 如果省略该参数或者将其值设置为 None(默认),将使用当前系统时间作为随机数种子(如果操作系统提供了随机性来源,则用它来代替系统时间)
2. 如果参数 a 为整数,则直接被用作随机数种子
3. 该参数的值也可以是字符串、字节、字节数组等
version:
1. 如果 version=2(默认),字符串、字节或字节数组对象的每一个位都将比转换成整数使用
2. version=1,用于从旧版本的 python 中复制随机序列,字符串和字节算法生成更窄的种子范围。
>>> seed("CY")>>> random()0.9972980921581983>>> seed("CY")>>> random()0.9972980921581983
2.生成随机数的常用函数
1) float
生成一个0到1的随机浮点数
>>> random()
在指定范围内随机生成一个浮点数,两个参数其中一个是上限,一个是下限。
如果a > b,则生成的随机数n: b <= n <= a。
如果 a uniform本质是均匀分布
>>> uniform(10, 100)
72.12159071766115
2) int
生成的一个随机整数n( a <= n <= b)
>>> randint(6,9)
8
randrange([start],stop[,step])
此函数从指定范围内,按指定基数递增的集合中获取一个随机数。
函数参数中,[]里的内容可以省。
生成从10到20以内的某一个偶数,即是从[10,12,14,16,18]中随机抽一个数。
>>> randrange(10,20,2)10
3) sequence
choice(sequence)
参数sequence表示一个有序类型。泛指一系列的类型:list,tuple,字符串等,如果为空会报错。
>>> choice("I love you!")'u'
choices(sequence, weights=None, cum_weights=None, k=1)
从参数列表中随机选择,weights可设置权重,提高选择机率;k返回的列表大小
>>> mylist = ["apple", "banana", "cherry"]>>> random.choices(mylist, weights = [10, 1, 1], k = 4)['apple', 'apple', 'cherry', 'banana']>>> random.choices(mylist, weights = [10, 1, 1], k = 4)['cherry', 'apple', 'apple', 'apple']
shuffle(sequence, function)
把一个列表内元素的顺序打乱,列表的内存地址不变
>>> mylist = ["apple", "banana", "cherry"]
>>> id(mylist)
2743283117640
>>> random.shuffle(mylist)
>>> mylist['cherry', 'apple', 'banana']
>>> id(mylist)
2743283117640
sample(sequence, k)
在序列sequence中取k个元素并随机排列。
>>> random.sample(range(100), 3)[26, 9, 23]
2、特定分布函数随机数
1)正态分布
>>> normalvariate(0,0.1)0.15171607814594112