python random模块常用函数基础教程

 更新时间:2023年06月16日 09:04:13   作者:安迪Python  
这篇文章主要为大家介绍了python random模块常用函数基础教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

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模块函数的资料请关注脚本之家其它相关文章!

相关文章

  • 备战618!用Python脚本帮你实现淘宝秒杀

    备战618!用Python脚本帮你实现淘宝秒杀

    本次的文章,分享一个淘宝秒杀脚本,这个脚本用Python编写,使用了Python库selenium,并且通过selenium + chromedriver,用程序控制chrome浏览器,完成抢购的一系列操作.有了这个脚本,大家至少可以与其他的机器人站在同一起跑线上,公平抢购喜欢的宝贝 ,需要的朋友可以参考下
    2021-06-06
  • Python实现求解括号匹配问题的方法

    Python实现求解括号匹配问题的方法

    这篇文章主要介绍了Python实现求解括号匹配问题的方法,涉及Python基于栈的字符串遍历、判断、运算解决括号匹配相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • 树莓派安装OpenCV3完整过程的实现

    树莓派安装OpenCV3完整过程的实现

    这篇文章主要介绍了树莓派安装OpenCV3完整过程的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-10-10
  • python批量替换文件名中的共同字符实例

    python批量替换文件名中的共同字符实例

    这篇文章主要介绍了python批量替换文件名中的共同字符实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Django之PopUp的具体实现方法

    Django之PopUp的具体实现方法

    今天小编就为大家分享一篇Django之PopUp的具体实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python学习笔记之For循环用法详解

    Python学习笔记之For循环用法详解

    这篇文章主要介绍了Python学习笔记之For循环用法,结合实例形式详细分析了Python for循环的功能、原理、用法及相关操作注意事项,需要的朋友可以参考下
    2019-08-08
  • python使用openpyxl库读写Excel表格的方法(增删改查操作)

    python使用openpyxl库读写Excel表格的方法(增删改查操作)

    这篇文章主要介绍了python使用openpyxl库读写Excel表格的方法(增删改查操作),本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • python求numpy中array按列非零元素的平均值案例

    python求numpy中array按列非零元素的平均值案例

    这篇文章主要介绍了python求numpy中array按列非零元素的平均值案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python3.9.1中使用match方法详解

    Python3.9.1中使用match方法详解

    这篇文章主要介绍了Python3.9.1中使用match方法详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Spy++的使用方法及下载教程

    Spy++的使用方法及下载教程

    这篇文章主要介绍了Spy++的使用方法及下载教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论