python random模块常用函数基础教程
作者:安迪Python
1. random 模块概述
random [ˈrændəm]:自由。
random 是Python的内置模块,直接import
导入即可使用,不需要安装。
【模块导入语法】
import random
【random模块的作用】
random 提供了许多函数,可以生成不同类型的随机数。如整数、浮点数、随机序列等。
通常用于生成随机字符串、洗牌、抽样等操作。
random 模块的使用非常广泛,可以用于模拟、游戏、密码学等领域。
随机的意思可以理解成每次运行得到的结果都是不一样的。
2. 调用模块的函数的语法
【调用语法】
模块名.函数名()
,如 os.mkdir()
os
是模块名。模块名和函数名之间有一个英文小圆点
.
。mkdir
是函数名。
3. 什么是序列
序列是指一组有序的元素,这些元素可以是数字、字符、对象等。
序列中的每个元素都有一个唯一的位置,称为索引
。
序列可以是可变的或不可变的,可变序列可以修改其中的元素,而不可变序列则不能。
序列可以通过索引
和切片
来访问其中的元素,也可以通过循环遍历
序列中的元素。
以下数据类型均属于序列:
字符串(str)
列表(list)
元组(tuple)
集合(set)
字典(dict)
字节数组(bytearray)
字节数组(bytes)
其中,字符串、列表和元组是最常用的序列类型。
序列是Python中最基本的数据结构之一,它们可以存储多个值,并且可以通过索引访问这些值。
3.1 字节数组(bytearray)
字节数组(bytearray)是Python中的一种数据类型,它是一个可变的序列,由一系列的字节组成。
每个字节都是一个8位的二进制数,可以表示0-255之间的整数。
字节数组可以通过索引访问和修改其中的元素,也可以进行切片操作。
字节数组常用于处理二进制数据,如图像、音频、视频等文件的读写操作。
3.2 字节数组(bytes)
字节数组(bytes)是一种数据类型,它表示一个由字节(8位二进制数)组成的序列。
字节数组可以用来存储二进制数据,例如图像、音频、视频等文件。
字节数组在Python中是不可变的,这意味着一旦创建,就不能修改其中的元素。
可以使用索引来访问字节数组中的元素,每个元素都是一个整数,范围从0到255。
3.3 字节数组(bytearray)和字节数组(bytes)是什么的区别
可变性:bytearray是可变的,而bytes是不可变的。这意味着可以修改bytearray中的元素,但不能修改bytes中的元素。
内存占用:bytearray比bytes占用更多的内存,因为bytearray需要额外的内存来存储其可变性。
支持的操作:由于bytearray是可变的,它支持更多的操作,如添加、删除和修改元素。而bytes只支持不可变的操作,如索引和切片。
用途:bytearray通常用于需要修改二进制数据的情况,如网络编程和加密。而bytes通常用于不需要修改的情况,如文件读取和传输数据。
4. random.betavariate()-返回一个0到1之间的随机数
beta [ˈbiːtə]:希腊字母表中第二个字母,β。
variate[ˈvɛːrɪət]:变量。
betavariate:β变量。
【作用】
random.betavariate()用于生成一个服从Beta分布
的随机数。
【语法】
import random random.betavariate(alpha, beta)
【参数说明】
alpha:Beta分布的第一个参数,必须大于0。
beta:Beta分布的第二个参数,必须大于0。
alpha[ˈælfə]:希腊字母表中第一个字母,α。
beta [ˈbiːtə]:希腊字母表中第二个字母,β。
【返回值】
返回一个服从Beta分布
的随机数。
【代码示例】
# 导入random库 import random x = random.betavariate(2, 5) print(x)
【终端输出】
random.choice(sequence)
调用模块的函数语法:模块名.函数名()
。
【代码解析】
random是模块名。
模块名和函数名之间有个英文小圆点
.
。betavariate是函数名。
alpha=2
beta=5
上述代码中,alpha=2,beta=5,生成的随机数x服从Beta(2, 5)分布。
5. 什么是Beta分布
Beta分布是一种概率分布,常用于描述随机变量在0到1之间的取值情况。
它的概率密度函数形式为:
其中, 是随机变量的取值, 和 是分布的两个参数, 是Beta函数,用于归一化概率密度函数。
Beta分布的形状由参数 和 控制,当 时,Beta分布退化为均匀分布。
当 和 时,Beta分布呈现出“钟形曲线”的形状,且分布的峰值在 处。
Beta分布在统计学中有广泛的应用,例如用于描述概率、比例、概率密度等。
【备注】
上述内容是百度粘贴复制过来的。
具体这个beta分布有什么用我也不明白。
6. random.random()-返回一个0.0到1.0之间的随机浮点数
random [ˈrændəm]:自由。
【作用】
random 模块的 random 函数是一个随机浮点数生成函数。
【语法】
random.random()
【参数说明】
该函数不需要传入任何参数。
【返回值】
返回一个0.0到1.0之间的随机浮点数。
【代码示例】
import random x = random.random() print(x)
【终端输出】
0.6746022416797438
7. random.random()和random.betavariate(2,5)的区别
random.random()用于生成一个0到1之间的随机浮点数,每次调用该函数都会生成一个新的随机数。
random.betavariate(2,5)是random模块中的函数,用于生成一个符合Beta分布的随机数。
其中参数2和5分别表示Beta分布的两个参数alpha和beta。
每次调用该函数都会生成一个新的随机数,但是生成的随机数不是均匀分布的,而是符合Beta分布的。
【小结】
random是彻底的随机选取一个数。
betavariate每次返回的数虽然不一样,但是它返回的数符合Beta分布。
8. random.choice()-从非空序列中返回一个随机元素
choice[tʃɔɪs]:选择。
【作用】
random.choice()用于从一个序列中随机选择一个元素并返回。
【语法】
random.choice(sequence)
【参数说明】
sequence[ˈsiːkwəns]:序列。
表示要从sequence中选择元素,sequence可以是列表、元组、字符串等序列。
【返回值】
返回序列中随机选择的一个元素。
8.1 从列表中随机选择一个元素
import random my_list = [1, 2, 3, 4, 5] print(random.choice(my_list))
【终端输出】
2
8.2 从元组中随机选择一个元素
import random my_tuple = ('a', 'b', 'c', 'd', 'e') print(random.choice(my_tuple))
【终端输出】
c
8.3 从字符串中随机选择一个字符
import random my_str = '安迪python学习笔记' print(random.choice(my_str))
【终端输出】
笔
8.4 从字典中随机选择一个元素
【选择一个键】
import random my_dict = {"a": 1, "b": 2, "c": 3} random_key = random.choice(list(my_dict.keys())) print(random_key)
【终端输出】
b
【选择一个值】
import random my_dict = {"a": 1, "b": 2, "c": 3} random_value = random.choice(list(my_dict.values())) print(random_value)
【终端输出】
1
【温馨提示】
字典是无序的。
因此不能直接使用random.choice()函数从字典中随机选择一个键或值。
需要先将字典的键转换为列表,然后再使用random.choice()函数。
9. 字典知识回顾
【定义】
字典是一种无序的键值对集合,用花括号 {}
来表示
键和值之间用冒号 :
分隔。
每个键值对之间用逗号 ,
分隔。
键必须是唯一的,但值可以不唯一。
【语法】
my_dict = {key1: value1, key2: value2, key3: value3, ...}
key1、key2、key3 等是字典的键。
value1、value2、value3 等是字典的值。
【字典操作】
取出所有键,并转换成列表:
list(dict.keys())
,返回一个包含字典中所有键的列表。取出一个键,用列表索引方式取出一个键,
list(my_dict.keys())[0]
。取值:
dict[key]
。
9.1 取出字典的所有键
my_dict = {'a': 1, 'b': 2, 'c': 3} keys = my_dict.keys() print(keys)
【终端输出】
dict_keys(['a', 'b', 'c'])
my_dict.keys()
是一个Python字典(dictionary)方法,用于返回字典中所有键(key)的列表。
具体来说,它返回一个可迭代的视图对象,其中包含字典中所有键的列表。
my_dict
是要获取值的字典对象。
keys
表示要返回包含所有键的列表。
keys()
方法返回的是一个特殊的dict_keys
对象,而不是普通的列表。
如果需要将其转换为列表,可以使用list()
函数。
my_dict = {'a': 1, 'b': 2, 'c': 3} keys = list(my_dict.keys()) print(keys)
【终端输出】
['a', 'b', 'c']
9.2 取出字典的一个键
用列表[索引]
的方式从列表中取出一个元素,取到的就是列表的一个键。
my_dict = {'a': 1, 'b': 2, 'c': 3} keys = list(my_dict.keys())[0] print(keys)
【终端输出】
a
9.3 取出字典的所有值
my_dict = {'a': 1, 'b': 2, 'c': 3} values = my_dict.values() print(values)
【终端输出】
dict_values([1, 2, 3])
my_dict
是要获取值的字典对象。
values
表示要返回包含所有值的列表。
values()
方法返回的是一个特殊的dict_values
对象,而不是普通的列表。
如果需要将其转换为列表,可以使用list()
函数。
my_dict = {'a': 1, 'b': 2, 'c': 3} values = list(my_dict.values()) print(values)
【终端输出】
[1, 2, 3]
9.4 取出字典的一个值
字典取值有以下4种方法:
使用方括号
[]
取值:可以通过键名直接访问字典中的值,例如:dict[key]。使用
get()
方法取值:get()方法可以通过键名获取字典中的值,如果键名不存在,则返回None或者指定的默认值。例如:dict.get(key, default=None)。使用
items()
方法取值:items()方法可以返回字典中所有键值对的元组列表,可以通过遍历列表获取字典中的所有值。例如:for key, value in dict.items()。使用
values()
方法取值:values()方法可以返回字典中所有的值,可以通过遍历列表获取字典中的所有值。例如:for value in dict.values()。
9.5 方括号[]
取值
my_dict = {'a': 1, 'b': 2, 'c': 3} values = my_dict['a'] print(values)
【终端输出】
1
my_dict
是要获取值的字典对象。
a
是字典中的一个键(key)。
[a]
表示取键a对应的值。
9.6 列表索引取值
my_dict = {'a': 1, 'b': 2, 'c': 3} values = list(my_dict.values())[0] print(values)
【终端输出】
1
10. random.choices()返回序列的随机元素
【作用】
random.choices()函数用于从给定的序列中随机选择指定数量的元素,可以重复选择同一个元素。
【语法】
random.choices(population, weights=None, *, cum_weights=None, k=1)
population[ˌpɒpjuˈleɪʃn]:总体。
weights[weɪts]:体重、权重。
cumulative[ˈkjuːmjələtɪv]:累积的。
cum_weights:累计权重。
【参数说明】
population:必选参数,表示要操作的序列,可以是列表、元组、字符串等。
weights:可选参数,表示每个元素的相对权重,必须是一个与population长度相同的列表,如果不指定,则所有元素的权重相等。
cum_weights:可选参数,表示每个元素的累积权重,必须是一个与population长度相同的列表,如果不指定,则根据weights计算出累积权重。
k:可选参数,表示要选择的元素数量,默认为1。
【相对权重和累计权重的区别】
相对权重
是指在一组数据中,每个数据所占的比例或重要性。相对权重的计算方法是将每个数据除以
所有数据的总和,得到每个数据的相对权重值。相对权重通常用于比较不同数据之间的重要性或影响力。
累计权重
是指在一组数据中,每个数据的权重值逐步累加
的过程。累计权重的计算方法是将每个数据的权重值依次相加
,得到每个数据的累计权重值。累计权重通常用于计算某个数据在整个数据集中的重要性或排名。
例如,如果有一个列表[1,2,3,4]
,并且指定了相对权重[1,2,3,4]
,则元素4的被选中的概率是元素1的概率的4倍。
例如,如果有一个列表[1,2,3,4]
,并且指定了累积权重[1,3,6,,0]
,则元素4的概率被选中的概率是元素1的概率的10倍。
如果还是不明白,可以这样理解:
当weight=[1, 2, 3, 4]时,则cum_weights=[1, 3, 6, 10]
- 1+2=3
- 1+2+3=6
- 1+2+3+4=10
这就是逐步累加的过程。
如果还是不明白,那就放弃吧,对现阶段学Python没什么意义,写出来就是扩展点大家的知识面而已。
【返回值】
返回一个列表,包含k个随机选择的元素。
【代码示例】
import random # 从列表中随机选择一个元素,没有k参数的时候,默认取1个元素 lst = ['张三', '李四', '王五', '赵六'] print(random.choices(lst)) # # 从列表中随机选择两个元素 k=2,取2个元素 print(random.choices(lst, k=2)) # # 从列表中随机选择三个元素,k=3,取3个元素 # 其中张三的权重为2,李四的权重为1,王五和赵六的权重为3 print(random.choices(lst, weights=[2, 1, 3, 3], k=3))
【终端输出】
['张三']
['赵六', '张三']
['赵六', '王五', '李四']
11. random.choices和random.choice的异同
【相同点】
都是从给定的序列中随机选择元素。
都可以用于列表、元组、字符串等序列类型。
【不同点】
random.choices可以从序列中选择多个元素,而random.choice只能选择一个元素。
random.choices可以指定每个元素被选择的概率,而random.choice选择的是等概率的。
random.choices返回的是一个列表,而random.choice返回的是一个单独的元素。
12. random.expovariate-返回指数分布的随机数
expovariate指数变量。
【作用】
random.expovariate用于生成指数分布的随机数。
【什么是指数分布】
指数分布是一种连续概率分布,常用于描述一些随机事件的时间间隔,如等待时间、到达时间等。
它的概率密度函数为f(x) = λe^(-λx),其中λ为分布参数,x为随机变量。
指数分布具有无记忆性,即在已知事件发生的时间点后,下一次事件发生的时间与上一次事件发生的时间无关。
指数分布在可靠性工程、生物学、经济学等领域中有广泛应用。
【语法】
random.expovariate(lambd)
【参数说明】
lambd:拉姆达,希腊字母的第11个, λ。
lambd:指数分布的参数,也称为速率参数,表示单位时间内发生事件的平均次数。
lambd表示1.0除以所需的平均值,该指为非0。
如果lambd为正,返回的值的范围为0到正无穷大。
如果lambd为负,返回的值的范围从负无穷大到0.
【返回值】
返回一个符合指数分布的随机数。
【lambd为正】
import random lambd = 0.5 x = random.expovariate(lambd) print(x)
【终端输出】
0.5572420727942687
【lambd为负】
import random lambd = -0.8 x = random.expovariate(lambd) print(x)
【终端输出】
-0.2489617561974653
13. random.gammavariate-返回以Gamma分布的随机数
gammavariate:伽玛变量。
gamma:伽玛,希腊字母表中第3字母 γ。
【作用】
random.gammavariate函数用于生成符合Gamma分布的随机数。
【什么是Gamma分布】
Gamma分布是一种连续概率分布,常用于描述随机事件发生的时间间隔或持续时间。
它的概率密度函数为:
【返回值】
返回一个符合Gamma分布的随机数。
【代码示例】
import random # 生成符合Gamma分布的随机数 alpha = 2 beta = 1 x = random.gammavariate(alpha, beta) print(x)
【终端输出】
2.0457066268448707
【生成5个服从Gamma分布的随机数】
import random for i in range(5): print(random.gammavariate(2, 1))
【终端输出】
0.36675044434061005
3.5617162671776015
2.441417900614287
2.913293585705838
3.0622343724484318
14. random.gauss-一个符合高斯分布的随机数
gauss[ɡaʊs]:高斯。
【作用】
random.gauss函数用于生成一个符合高斯分布的随机数。
【什么是高斯分布】
高斯分布,也称为正态分布,是一种常见的概率分布。
它的概率密度函数呈钟形曲线,中心对称,具有一个峰值,两侧逐渐趋于无穷小。
高斯分布的特点是均值和标准差决定了它的形状和位置。
在自然界和社会现象中,很多现象都可以用高斯分布来描述,例如身高、体重、智力、收入等。高斯分布在统计学、物理学、工程学、经济学等领域都有广泛的应用。
【语法】
random.gauss(mu, sigma)
【参数说明】
mu:高斯分布的均值(期望值)。
sigma:高斯分布的标准差。
mu:缪,希腊字母表中第12个字母, μ。
sigma:西格玛,希腊字母表中第18个字母,σ。
【返回值】
返回一个符合高斯分布的随机数。
【代码示例】
import random mu = 0 # 均值 sigma = 1 # 标准差 x = random.gauss(mu, sigma) print(x)
【终端输出】
-1.0577354695155303
以上就是python random模块常用函数使用教程的详细内容,更多关于python random模块函数的资料请关注脚本之家其它相关文章!