导图社区 python-random模块
random是Python的内置模块,通过random可以获得随机数,可以从给定的集群中抽取样本(比如,抽奖!)。 本思维导图介绍了随机值、特定规则的随机数、随机数生成器三个板块,详细罗列了各版块相关的随机函数及相关的参数、返回值,并在特定规则的随机值的基础上补充了概率分布的相关公式。 自己掌握的知识尚浅,不足之处,还请谅解!欢迎大家给出意见,谢谢!
编辑于2023-02-07 10:06:48 四川省当运行程序时,数据会以变量、序列或者对象的形式,在程序中临时存储。但当程序运行结束之后,数据也随之消失。如果我们想长期保存数据,那么就需要将数据存储到磁盘文件中,这就需要通过Python读写文件,即I/O操作。I/O操作有三步:1、打开文件;2、文件读写;3、关闭文件(或者编写成with语句)。 本篇思维导图,即是围绕而操作的核心——文件对象(file_obj)来展开讲解,分为2个部分:一、file_obj的创建(open函数);二、file_obj的方法调用(读取文件、写入文件、文件指针以及最后的关闭文件)。 希望通过本篇思维导图,能帮助你对使用Python进行文件读写有更深的理解与认识!
Python数据类型,从整体来看,以数字、文本为基础,用列表、字典、元组、集合作为容器;以性质划分,又分为可变与不可变数据。 本篇思维导图为大家讲解的即是Python中作为基础数据的数字(包含整型、浮点型、复数)。 数字本身的内容不多,重点在其有多样的表现形式。然后,对数字的相关处理方式(运算 函数)。 值得注意的是,整型就是整数,但是,浮点型不等于小数,也表达不了分数。所有针对于小数及分数的运算,补充了Decimal类、Praction类的讲解部分。 最后,对于数字运算有重要关系的math模块,将相关的函数及特殊值进行汇总,希望对大家在用到数学运算的时侯带来帮助。 本篇导图逻辑清晰、内容完整,希望能对想要深入学习Python的您带来帮助!
Python数据类型,从整体来看,以数字、文本为基础,用列表、字典、元组、集合作为容器;以性质划分,又分为可变与不可变数据。 本篇思维导图为大家讲解的即是Python中作为基础数据的文本(即字符串),以“时间顺序”将内容拆解为"创建、引用、操作、输出"四个部分。 1、字符串由引号直接创建,一些特殊的内容需要用到转义字符;当然,还需特别注意引号前的字母,对字符内容存在一定的影响; 2、字符串的引用,同列表一样,即索引与切片;但其属于不可变数据类型,不支持就地更改; 3、字符串的操作按照操作方式,分为“运算、函数、方法”三种方式,其字符串的方法非常丰富,特别将方法进行详细的梳理归纳,以便我们能更好的使用。 4、字符串输出部分,重点讲格式化输出,并对字符呈现起着关键作用的spec字段详细讲解,以便我们的文字内容能够更好的呈现。 本篇导图逻辑清晰、内容完整,希望能对想要深入学习Python的您带来帮助!
社区模板帮助中心,点此进入>>
当运行程序时,数据会以变量、序列或者对象的形式,在程序中临时存储。但当程序运行结束之后,数据也随之消失。如果我们想长期保存数据,那么就需要将数据存储到磁盘文件中,这就需要通过Python读写文件,即I/O操作。I/O操作有三步:1、打开文件;2、文件读写;3、关闭文件(或者编写成with语句)。 本篇思维导图,即是围绕而操作的核心——文件对象(file_obj)来展开讲解,分为2个部分:一、file_obj的创建(open函数);二、file_obj的方法调用(读取文件、写入文件、文件指针以及最后的关闭文件)。 希望通过本篇思维导图,能帮助你对使用Python进行文件读写有更深的理解与认识!
Python数据类型,从整体来看,以数字、文本为基础,用列表、字典、元组、集合作为容器;以性质划分,又分为可变与不可变数据。 本篇思维导图为大家讲解的即是Python中作为基础数据的数字(包含整型、浮点型、复数)。 数字本身的内容不多,重点在其有多样的表现形式。然后,对数字的相关处理方式(运算 函数)。 值得注意的是,整型就是整数,但是,浮点型不等于小数,也表达不了分数。所有针对于小数及分数的运算,补充了Decimal类、Praction类的讲解部分。 最后,对于数字运算有重要关系的math模块,将相关的函数及特殊值进行汇总,希望对大家在用到数学运算的时侯带来帮助。 本篇导图逻辑清晰、内容完整,希望能对想要深入学习Python的您带来帮助!
Python数据类型,从整体来看,以数字、文本为基础,用列表、字典、元组、集合作为容器;以性质划分,又分为可变与不可变数据。 本篇思维导图为大家讲解的即是Python中作为基础数据的文本(即字符串),以“时间顺序”将内容拆解为"创建、引用、操作、输出"四个部分。 1、字符串由引号直接创建,一些特殊的内容需要用到转义字符;当然,还需特别注意引号前的字母,对字符内容存在一定的影响; 2、字符串的引用,同列表一样,即索引与切片;但其属于不可变数据类型,不支持就地更改; 3、字符串的操作按照操作方式,分为“运算、函数、方法”三种方式,其字符串的方法非常丰富,特别将方法进行详细的梳理归纳,以便我们能更好的使用。 4、字符串输出部分,重点讲格式化输出,并对字符呈现起着关键作用的spec字段详细讲解,以便我们的文字内容能够更好的呈现。 本篇导图逻辑清晰、内容完整,希望能对想要深入学习Python的您带来帮助!
P
Y
T
H
O
N
Random 模块
参考资料
1
《Python 编程超级魔卡》(明日科技)
2
Python 源代码
3
《random.seed()的用法》(CSDN 云隐雾匿)
4
概率分布等(百度百科)
多学,多练,多思考
random —— 伪随机数
二、生成器的状态
1.random.getstate()
返回一个具有随机数生成当前状态的对象(state), state,用于random.setstate(state)
2.random.setstate(state)
state: 通过getstate()方法获取到的生成器内部状态对象
将随机数生成器的状态恢复到指定状态
看似随机,但并不随机
通过a(种子)初始化内部生成器状态
a,为指定的种子,默认使用系统时间作为种子
random.seed(a=None, version=2)
一、初始化随机数生成器
制图人 | 以核为贵 制图时间 | 2023.02.04 制图软件 | MindMaster
random —— 特定概率统计分布的随机值
β分布
random.betavariate(alpha, beta)
生成0-1之间以Beta (β) 概率分布的随机数
高斯分布
random.gauss(mu,sigma)
生成以高斯分布的随机数
正态分布
random.normalvariate(mu,sigma)
生成以正态分布的随机数
对数正态分布
random.lognormvariate(mu, sigma)
生成以对数正态分布的随机数
指数分布
random.expovariate(lambd)
生成以指数分布的随机数
γ 分布
random.gammavariate(alpha, beta)
生成以Gamma(γ)分布的随机数
Weibull分布
random.weibullvariate(alpha, beta)
生成以Weibull分布的随机数
von Mises分布
random.vonmisesvariate(mu, kappa)
生成以von Mises分布的随机数
三角分布
random.triangular(low, high, mode)
生成以三角分布的随机数
Pareto分布
random.paretovariate(alpha)
生成以Pareto分布的随机数
随机位数
random.getrandbits(k)
生成一个K(指定值) 随机位的整数
制图人 | 以核为贵 制图时间 | 2023.02.04 制图软件 | MindMaster
random —— 随机数值、随机抽取、随机排序
二、从 指定序列 中随机选取元素
选取 1 个元素
random.choice(seq)
从序列seq中,随机选取1个元素
选取 k 个元素
random.choices( population, weights=None, cum_weights=None, k=1)
从集群population中, 随机选取k个(可重复 )元素
random.sample(population, k)
从集群population中, 随机选取k个(不重复 )元素
三、对序列元素 随机排序
打乱 元素顺序
random.shuffle(x, random=None)
将序列x(list, dict)的顺序随机打乱
来体验一下随机的乐趣吧!
生成 1个 整数
random.randint(a, b)
随机生成1个 [a, b] 内的整数
random.randrange( start, stop=None, step=1)
从 range(start, stop, step) , 随机生成1个整数
生成 1个 浮点数
random.random()
随机生成 1个 [0, 1) 内的浮点数
random.uniform(a, b)
随机生成1个 [a, b) 内的浮点数
一、随机生成 一个数值
制图人 | 以核为贵 制图时间 | 2023.02.04 制图软件 | MindMaster
Python——random模块的单词云
random
/ˈrændəm/
随机
choice
/tʃɔɪs/
选择
integer
/ˈɪntɪdʒər/
整数
sequence
/ˈsiːkwəns/
序列
range
/reɪndʒ/
范围
uniform
/ˈjuːnɪfɔːrm/
一致、均匀
sample
/ˈsæmp(ə)l/
样本
shuffle
/ˈʃʌf(ə)l/
重新洗牌
variate
/ˈverɪeɪt/
变量;随机值
population
/ˌpɑːpjuˈleɪʃ(ə)n/
种群
weight
/weɪt/
权重
cumulative
/ˈkjuːmjəleɪtɪv/
累加的
state
/steɪt/
状态
version
/ˈvɜːrʒ(ə)n/
样式;型号
seed
/siːd/
种子
beta
/ˈbetər/
β
alpha
/ˈælfə/
α
mu
/mjuː/
μ
gamma
/ˈɡæmə/
γ
sigma
/ˈsɪɡmə/
σ
bit
/bɪt/
位
gauss
/ɡaʊs/
高斯;正态
pareto
/pɑˈrɛtɔ/
帕累托
vonmises
冯.米塞斯
weibull
威布尔
logarithm
/ˈlɔːɡərɪðəm/
对数
exponent
/ɪkˈspoʊnənt/
指数
triangular
/traɪˈæŋɡjələr/
三角的
normal
/ˈnɔːrm(ə)l/
正常的
random —— 随机数生成器
制图人 | 以核为贵 制图时间 | 2023.02.04 制图软件 | MindMaster
一、初始化随机数生成器
random.seed(a=None, version=2)
通过a(种子)初始化内部生成器状态
参数
a
为指定的种子,默认使用系统时间作为种子
与其他随机函数搭配使用,将seed放置在其他随机函数前
示例
import random def test_seed(a): random.seed(a) test_ls1 = [] test_ls2 = [] for i in range(1250): if i < 625: x = random.random() test_ls1.append(x) # print(f'随机数{1+i}:',x) if i == 625: random.seed(a) if i >= 625: x = random.random() test_ls2.append(x) # print(f'随机数{1+i}:',x) for i in range(625): if test_ls1[i] != test_ls2[i]: print(a, i,test_ls1[i],test_ls2[i]) else: print(a, 'over!') test_a_ls = ['a', 'b', 'c', 1, 2, 3, 5.0] for a in test_a_ls: test_seed(a)
当a相同时,随机函数依次生成的随机数也是相同的; 用随机函数,但随机的值是跟种子a绑定的(伪随机)
import random def test_seed(a): random.seed(a) # 初始化生成器,放于random()前 test_ls1 = [] # 列表1,存放第1组随机数 test_ls2 = [] # 列表2,存放第2组随机数 # 用相同的种子,生成2组随机序列 for i in range(1250): if i < 625: # 生成625个随机数,存放第1组数据 x = random.random() # 以random函数为例 test_ls1.append(x) if i == 625: # 初始化生成器 random.seed(a) if i >= 625: # 重新生成625个随机数,存放到第2组 x = random.random() test_ls2.append(x) # 对2组序列的随机数依次比较 for i in range(625): if test_ls1[i] != test_ls2[i]: print(f"种子{a},第{i}个数不同") print(f"分别为:{test_ls1[i]},{test_ls2[i]}") return else: print(f'种子{a}生成的2组随机序列比较完毕,未发现有2个不同的数!') # 开始比较 test_a_ls = ['a', 'b', 'c', 1, 2, 3, 5.0] # 随便放种子 for a in test_a_ls: test_seed(a)
二、生成器的状态
1.random.getstate() 当前生成器内部状态的对象
返回一个具有随机数生成当前状态的对象(state), state,用于random.setstate(state)
2.random.setstate(state) 恢复生成器的内容状态
将随机数生成器的状态恢复到指定状态
参数
state
通过getstate()方法获取到的生成器内部状态对象
getstate与setstate搭配使用,将getstate的随机场景还原
random —— 概率统计
制图人 | 以核为贵 制图时间 | 2023.02.04 制图软件 | MindMaster
特定规则的随机数
β分布
random.betavariate(alpha, beta)
生成0-1之间以Beta(β)概率分布的随机数
参数
alpha
beta
在概率论中,贝塔分布(也称B分布),是指一组定义在(0, 1)区间的连续概率分布,有两个参数 α, β>0
X~Be(α, β)
随机变量X服从参数为 α, β 的Β分布
正态分布
random.normalvariate(mu,sigma)
生成以正态分布的随机数
参数
mu
平均值
sigma
标准差
X~N(μ, σ²)
随机变量X服从期望为μ, 方差为σ² 的正态分布
高斯分布
random.gauss(mu,sigma)
生成以高斯分布的随机数
参数
mu
平均值
sigma
标准差
对数正态分布
random.lognormvariate(mu, sigma)
生成以对数正态分布的随机数
参数
mu
平均值
sigma
标准差
对数正态分布(logarithmic normal distribution)是指一个随机变量的对数服从正态分布,则该随机变量服从对数正态分布。
lnX~N(μ, σ²)
随机变量X服从期望为μ, 方差为σ² 的对数正态分布
指数分布
random.expovariate(lambd)
生成以指数分布的随机数
参数
lambda
率参数
在概率理论和统计学中,负指数分布(也称为指数分布)是描述泊松过程中的事件之间的时间的概率分布,即事件以恒定平均速率连续且独立地发生的过程
X~Exp(λ)
随机变量X服从参数为λ的指数分布
von Mises分布
random.vonmisesvariate(mu, kappa)
生成以von Mises分布的随机数
参数
mu
位置的度量
kappa
集中度的度量
其中I0(x)是0阶修正贝塞尔函数
在概率论和定向统计中,冯·米塞斯分布(von Mises distribution)指一种圆上连续概率分布模型,它也被称作循环正态分布(circular normal distribution)。
γ 分布
random.gammavariate(alpha, beta)
生成以Gamma(γ)分布的随机数
参数
alpha
形状参数(shape parameter)
beta
逆尺度参数
伽玛分布(Gamma Distribution)是统计学的一种连续概率函数,是概率统计中一种非常重要的分布。 “指数分布”和“χ2分布”都是伽马分布的特例。
Weibull分布
random.weibullvariate(alpha, beta)
生成以Weibull分布的随机数
参数
alpha
比例参数(scale parameter)
beta
形状参数(shape parameter)
韦布尔分布,即韦伯分布(Weibull distribution),又称韦氏分布或威布尔分布,是可靠性分析和寿命检验的理论基础。
三角分布
random.triangular(low, high, mode)
生成以三角分布的随机数
参数
low
低限
high
上限
mode
众数
三角分布(triangular distribution),亦称辛普森分布或三角形分布。在概率论与统计学中,三角形分布是低限为a、众数为c、上限为b的连续概率分布。
Pareto分布
random.paretovariate(alpha)
生成以Pareto分布的随机数
参数
alpha
形状参数
x是任何一个大于xmin的数,xmin是X最小的可能值(正数),k是为正的参数
随机位数
random.getrandbits(k)
生成一个K(指定值) 随机位的整数
参数
k
k表示的是2进制的位数
返回值
返回一个0~2^k-1范围内的一个随机整数
随机获取一个符合对应概率分布的数值
random —— 随机值
制图人 | 以核为贵 制图时间 | 2023.02.04 制图软件 | MindMaster
一、随机生成 1个 普通数值(浮点数/整数)
1
随机生成 1 个浮点数
random.random()
随机生成 1个 [0.0, 1.0) 之间的浮点数
返回值
返回1个 [0, 1) 之间的浮点数
random.uniform(a, b)
随机生成1个 [a, b) 之间的浮点数
参数
a, b
浮点数、整数、正负,均可
返回值
返回1个 [a, b) 之间的浮点数
2
随机生成 1个 整数
random.randint(a, b)
随机生成1个 [a, b] 之间的整数
参数
a, b
b ≥ a,整数、正负,均可
返回值
返回1个 [a, b] 之间的整数
random.randrange(start, stop=None, step=1)
从 range(start, stop, step) 中, 随机生成1个整数
参数
start
起始值,整数;当stop=None时,则start为终值且 start > 0
stop
终值,整数
step
步长,整数
返回值
返回1个在range(start, stop, step) 之间的整数
抽选一个随机数,试着来猜一猜吧!
二、从指定序列中选取元素
1
从指定序列中,随机选取1个元素
random.choice(seq)
从序列seq中,随机选取1个元素
参数
seq
序列(list, tuple, range() ...)
返回值
返回序列seq中的1个元素
2
从指定序列中,随机选取k个元素
random.choices(population, weights=None, cum_weights=None, k=1)
从集群populations中, 随机选取k个(可重复)元素
参数
population
集群: list,tuple, range()
weights
相对权重:列表,其中元素的数值所占比,即对应元素被抽取的概率
cum_weights
累加权重:列表,其中元素的数值所占比,表示累加概率
k
选取元素的次数
返回值
从集群populations中,随机选取k个(可重复)元素,返回1个列表
random.sample(population,k)
参数
population
集群: list,tuple, range()
k
选取元素的次数
返回值
从集群populations中,随机选取k个(不重复)元素,返回1个列表
选择几个奖品,给大家来抽一抽吧!
三、随机排列序列元素
random.shuffle(x, random=None)
打乱 列表x 中元素的顺序
参数
x
列表
random
随机函数
Python —— random模块
random —— 随机数值、随机抽取、随机排序
二、从 指定序列 中随机选取元素
选取 1 个元素
random.choice(seq)
从序列seq中,随机选取1个元素
选取 k 个元素
random.choices( population, weights=None, cum_weights=None, k=1)
从集群population中, 随机选取k个(可重复 )元素
random.sample(population, k)
从集群population中, 随机选取k个(不重复 )元素
三、对序列元素 随机排序
打乱 元素顺序
random.shuffle(x, random=None)
将序列x(list, dict)的顺序随机打乱
来选一个随机数吧!
生成 1个 整数
random.randint(a, b)
随机生成1个 [a, b] 内的整数
random.randrange( start, stop=None, step=1)
从 range(start, stop, step) , 随机生成1个整数
生成 1个 浮点数
random.random()
随机生成 1个 [0, 1) 内的浮点数
random.uniform(a, b)
随机生成1个 [a, b) 内的浮点数
一、随机生成 一个数值
制图人 | 以核为贵 制图时间 | 2023.02.04 制图软件 | MindMaster
random —— 特定概率统计分布的随机值
β分布
random.betavariate(alpha, beta)
生成0-1之间以Beta (β) 概率分布的随机数
高斯分布
random.gauss(mu,sigma)
生成以高斯分布的随机数
正态分布
random.normalvariate(mu,sigma)
生成以正态分布的随机数
对数正态分布
random.lognormvariate(mu, sigma)
生成以对数正态分布的随机数
指数分布
random.expovariate(lambd)
生成以指数分布的随机数
γ 分布
random.gammavariate(alpha, beta)
生成以Gamma(γ)分布的随机数
Weibull分布
random.weibullvariate(alpha, beta)
生成以Weibull分布的随机数
von Mises分布
random.vonmisesvariate(mu, kappa)
生成以von Mises分布的随机数
三角分布
random.triangular(low, high, mode)
生成以三角分布的随机数
Pareto分布
random.paretovariate(alpha)
生成以Pareto分布的随机数
随机位数
random.getrandbits(k)
生成一个K(指定值) 随机位的整数
制图人 | 以核为贵 制图时间 | 2023.02.04 制图软件 | MindMaster
random —— 伪随机数
二、生成器的状态
1.random.getstate()
返回一个具有随机数生成当前状态的对象(state), state,用于random.setstate(state)
2.random.setstate(state)
state: 通过getstate()方法获取到的生成器内部状态对象
将随机数生成器的状态恢复到指定状态
看似随机,但又不完全是随机
通过a(种子)初始化内部生成器状态
a,为指定的种子,默认使用系统时间作为种子
random.seed(a=None, version=2)
一、初始化随机数生成器
制图人 | 以核为贵 制图时间 | 2023.02.04 制图软件 | MindMaster