python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python random模块函数

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

作者:安迪Python

这篇文章主要为大家介绍了python random模块常用函数基础教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

1. random 模块概述

random [ˈrændəm]:自由。

random 是Python的内置模块,直接import导入即可使用,不需要安装。

【模块导入语法】

import random 

【random模块的作用】

随机的意思可以理解成每次运行得到的结果都是不一样的。

2. 调用模块的函数的语法

【调用语法】

模块名.函数名(),如 os.mkdir()

3. 什么是序列

序列是指一组有序的元素,这些元素可以是数字、字符、对象等。

序列中的每个元素都有一个唯一的位置,称为索引

序列可以是可变的或不可变的,可变序列可以修改其中的元素,而不可变序列则不能。

序列可以通过索引切片来访问其中的元素,也可以通过循环遍历序列中的元素。

以下数据类型均属于序列:

其中,字符串、列表和元组是最常用的序列类型。

序列是Python中最基本的数据结构之一,它们可以存储多个值,并且可以通过索引访问这些值。

3.1 字节数组(bytearray)

字节数组(bytearray)是Python中的一种数据类型,它是一个可变的序列,由一系列的字节组成。

每个字节都是一个8位的二进制数,可以表示0-255之间的整数。

字节数组可以通过索引访问和修改其中的元素,也可以进行切片操作。

字节数组常用于处理二进制数据,如图像、音频、视频等文件的读写操作。

3.2 字节数组(bytes)

字节数组(bytes)是一种数据类型,它表示一个由字节(8位二进制数)组成的序列。

字节数组可以用来存储二进制数据,例如图像、音频、视频等文件。

字节数组在Python中是不可变的,这意味着一旦创建,就不能修改其中的元素。

可以使用索引来访问字节数组中的元素,每个元素都是一个整数,范围从0到255。

3.3 字节数组(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[ˈælfə]:希腊字母表中第一个字母,α。

beta [ˈbiːtə]:希腊字母表中第二个字母,β。

【返回值】

返回一个服从Beta分布的随机数。

【代码示例】

# 导入random库
import random
x = random.betavariate(2, 5)
print(x)

【终端输出】

random.choice(sequence)

调用模块的函数语法:模块名.函数名()

【代码解析】

上述代码中,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 等是字典的值。

【字典操作】

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种方法:

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:累计权重。

【参数说明】

【相对权重和累计权重的区别】

相对权重是指在一组数据中,每个数据所占的比例或重要性。相对权重的计算方法是将每个数据除以所有数据的总和,得到每个数据的相对权重值。相对权重通常用于比较不同数据之间的重要性或影响力。

累计权重是指在一组数据中,每个数据的权重值逐步累加的过程。累计权重的计算方法是将每个数据的权重值依次相加,得到每个数据的累计权重值。累计权重通常用于计算某个数据在整个数据集中的重要性或排名。

例如,如果有一个列表[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]

这就是逐步累加的过程。

如果还是不明白,那就放弃吧,对现阶段学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的异同

【相同点】

【不同点】

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:缪,希腊字母表中第12个字母, μ。

sigma:西格玛,希腊字母表中第18个字母,σ。

【返回值】

返回一个符合高斯分布的随机数。

【代码示例】

import random
mu = 0  # 均值
sigma = 1  # 标准差
x = random.gauss(mu, sigma)
print(x)

【终端输出】

-1.0577354695155303

以上就是python random模块常用函数使用教程的详细内容,更多关于python random模块函数的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文