Python 中 随机数 random库 学习与使用

        python中的随机数应用大体包含,随机整数随机浮点数 和 获取随机数序列三类。

一. 随机整数

1.1 随机整数,包含上下限(闭区间)

randint(a, b):随机选取 [a, b] 之间的一个整数,随机整数包含a 和 b,因此是左右闭区间。

# random.randint(a, b)
r = random.randint(0, 100)
print(r)

1.2 随机整数,包含下限,不包含上限(区间左闭右开 )

randrange(a, b):随机选取 [a, b) 之间的一个整数,随机整数包含a,不包含b。

randrange包含三个参数:

1. start :下限

2. stop :上限

3. step :可选参数,用于设置步长

# random.randrange(a, b)
r = random.randrange(0, 100)

# 设置步长
r = random.randrange(0, 100, 5)
print(r)

# output,因为设置了步长5,所以只能从0,5,10,15,...,95,之间随机
35

二. 随机浮点数

 2.1 随机0~1之间的浮点数,!包含0,不包含1

r = random.random()
print(r)

2.2  随机区间内的浮点数

        random.uniform(a, b):随机闭区间 [a, b] 内的浮点数,其中不限制 a 和 b 的大小。

# random.uniform(a, b)
# 随机选取闭区间[20, 50]内的一个浮点数
r = random.uniform(20, 50)

# 随机选取闭区间[1, 15]内的一个浮点数
r = random.uniform(15, 1)

三. 序列相关随机

3.1 从已有的序列中随机选择其中一个元素 或 多个元素(可重复,放回采样)

        (1) random.choice(a):从有序序列里随机获取一个其中数据(有序序列包括字符串、列表、元组等)。     

# 1. 从字符串中随机选取一个字符
r = random.choice('abcdefg')
print(r)
# 2. 从元组中随机选取一个元素
r = random.choice(('aa', 'bb', 'cc', 'dd'))
print(r)
# 3. 从list列表中随机选取一个元素
r = random.choice(['a1', 'a2', 'a3', 'a4'])
print(r)
# 4. 从含有多个类型元素的list列表中选取多个元素
r = random.choice([1, 'abc', ('e, f')])
print(r)


# output
# b
# aa
# a4
# abc

        (2) random.choices(a,weight,k):从有序序列里随机获取多个其中数据(有序序列包括字符串、列表、元组等)。

random.choices() 包含三个参数:

1. a :有序序列,从该序列中随机选择 1个 或 多个元素

2. weight :可选参数,表示概率,如果不设置就默认每个数据被取到的概率相同

3. k :可选参数,表示随机获取的次数

返回值:列表类型,内部元素可重复

# 当元素集合是list时
# 1. 默认等概率取值,取2次
r = random.choices(['a1', 'a2', 'a3', 'a4'], k = 2)
print(type(r))
print(r)

# output
# <class 'list'>
# ['a3', 'a2']

# 2. 指定不同元素被获取的概率,取2次
r = random.choices(['a1', 'a2', 'a3', 'a4'], weights=[6, 1, 1, 1], k = 2)
print(r)

# output, 可知a1被获取的概率是60%,
# ['a1', 'a1']

        注意!:当元素列表是 list字符串 或 元组 时,random.choices()返回值类型也是 list

# 元组类型
t = ('t1', 't2', 't3', 't4')
print(type(t))
r = random.choices(t, weights=[1, 1, 1, 6], k = 2)
print(type(r))

# output
# <class 'tuple'>
# <class 'list'>

3.2 从已有的序列中随机选择其中一个元素 或 多个元素(不可重复,不放回采样)

       random.sample(a,k):在已知序列 a 中,一次性 + 随机 选取 k 个,同一个元素不会被重复选择;返回值类型 是 list。

        注意:元素集合的长度 必须大于 选择次数。

r = random.sample([1, 1, 1, 1, 2], k=2)
print(type(r))
print(r)

# output
# <class 'list'>
# [1, 2]

3.3 随机打乱序列顺序

        random.shuffle(a):随机打乱元素集合列表a,然后将结果覆盖原列表a。
        注意:被打乱的序列必须是可变的,比如列表;不能是是元组,因为元组是不可修改的。

a = [1, 2, 3, 4, 5]
random.shuffle(a)
print(a)

# output
# [3, 1, 5, 2, 4]

猜你喜欢

转载自blog.csdn.net/xiao_ling_yun/article/details/130400417