内置random模块常用方法
- 一、方法汇总
- 二、方法的使用
- 1、randrange()
- 2、random()
- 3、randint()
- 4、uniform()
- 5、sample()
- 6、shuffle()
- 7、choice()
- 8、choices()
- 三、练习题
一、方法汇总
Python有一个random内置模块,可用于生成随机数。要使用其内置函数,需要先导入random模块。以下是汇总常用的几个方法:
方法 | 描述 |
randrange() | 返回给定范围之间(左闭右开)的随机数 |
random() | 返回介于[0,1)之间的随机浮点数 |
randint() | 返回给定范围之间(包括两者)的随机数 |
uniform() | 返回两个给定参数(包括两者)之间的随机浮点数 |
sample() | 返回序列的给定样本(此方法不会更改原始序列的顺序) |
shuffle() | 取得序列,并以随机顺序返回序列(此方法会改变原有序列的顺序) |
choice() | 从指定序列中返回一个随机选择的元素 |
choices() | 从指定序列中返回随机选择的列表 |
二、方法的使用
1、randrange()
(一)描述:
randrange() 用于返回指定范围之间的随机数,左闭右开,可以指定步长,步长默认为1。
(二)语法:
import random
random.randrange(start, stop, step)
(三)参数说明:
start – 指定范围内的开始值,包含在范围内,可以是正/负整数。
stop – 指定范围内的结束值,不包含在范围内,可以是正/负整数。
step – 指定递增基数,可以是正/负整数。
(四)实例:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time: 2021/5/23 下午 4:17
# @File: random_test.py
# @Software: PyCharm
import random
# 从1-100从随机选取一个奇数
a = random.randrange(1, 100, 2)
print("a: ", a)
# 从0~99随机选取一个数。 左闭右开,stop不包括
b = random.randrange(0, 100)
print("b: ", b)
# 输出结果:
a: 21
b: 73
2、random()
(一)描述:
random() 用于返回介于[0,1)范围内的随机浮点数。
(二)语法:
import random
random.random()
(三)参数说明:
无,不需要传参
(四)实例:
import random
c = random.random()
print("c: ", c)
# 格式化输出2位小数
print('c的值取2位小数是 %.2f' % c)
# 输出结果(每运行一次都不一样):
c: 0.6401644251696467
c的值取2位小数是 0.64
3、randint()
(一)描述:
randint() 用于返回指定范围之间的随机整数,包括start 和 stop。
(二)语法:
import random
random.randint(start, stop)
(三)参数说明:
start: 一个整数,指定从哪个位置开始。
stop: 一个整数,指定从哪个位置结束。
(四)实例:
import random
# 包括0 和 9
d = random.randint(0, 9)
print("d的值是:", d)
# 输出结果(每运行一次都不一样):
d的值是: 7
4、uniform()
(一)描述:
uniform() 用于返回两个给定参数(包括两者)之间的随机浮点数。
(二)语法:
import random
random.uniform(a, b)
(三)参数说明:
a: 指定最低可能结果的数字。
b: 指定最高可能结果的数字。
(四)实例:
import random
# 包括20 和 30
e = random.uniform(20, 30)
print("e的值是:", e)
# 输出结果(每运行一次都不一样):
e的值是: 21.41896906862559
5、sample()
(一)描述:
sample() 用于返回一个列表,其中从序列中随机选择指定数量的项目,需注意的是,此方法不会改变原有序列的顺序。
(二)语法:
import random
random.sample(sequence, k)
(三)参数说明:
sequence: 指一个序列, 可以是任何序列:列表,集合,范围等。
k: 指的是返回列表的大小。
(四)实例:
import random
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
f = random.sample(my_list, 5)
print("f随机序列是:", f)
# 输出结果(每运行一次都不一样):
f随机序列是: [1, 10, 0, 6, 3]
6、shuffle()
(一)描述:
shuffle() 取得一个序列(列表,字符串或元组),并以随机顺序返回一个序列(改变原有序列的顺序)。
(二)语法:
import random
random.shuffle(sequence, function)
(三)参数说明:
sequence: 指一个序列, 可以是任何序列:列表,元组,字符串等。
function: 返回0.0到1.0之间的数字的函数的名称。如果未指定,将使用random()函数。
(四)实例:
情况一:未指定function
import random
my_list = ['apple', 'banana', 'orange']
random.shuffle(my_list)
print("打乱后的序列是:", my_list)
# 输出结果(每运行一次都不一样):
打乱后的序列是: ['apple', 'orange', 'banana']
情况二:自己定义function
import random
def my_function():
return 0.1
my_list = ["apple", "banana", "cherry"]
random.shuffle(my_list, my_function)
print(my_list)
# 输出结果(每次都一样):
['banana', 'cherry', 'apple']
7、choice()
(一)描述:
choice()方法从指定序列中返回一个随机选择的元素。该序列可以是字符串,范围,列表,元组或任何其他种类的序列。
(二)语法:
import random
random.choice(sequence)
(三)参数说明:
sequence: 指一个序列, 可以是任何序列:列表,元组,字符串等。
(四)实例:
import random
my_list = ["apple", "banana", "cherry"]
print("随机取得的元素是:", random.choice(my_list))
# 输出结果(每运行一次都不一样):
随机取得的元素是: apple
8、choices()
(一)描述:
choices()方法返回一个列表,其中包含从指定序列中随机选择的元素。可以使用weights参数或cum_weights参数权衡每个结果的可能性。该序列可以是字符串,范围,列表,元组或任何其他种类的序列。
(二)语法:
import random
random.choices(sequence, weights=None, cum_weights=None, k=1)
(三)参数说明:
sequence: 指一个序列, 可以是任何序列:列表,元组,字符串等。
weights: 相对权重,可以在列表中权衡每个值的可能性。默认None
cum_weights: 累计权重,一个列表,可以权衡每个值的可能性,仅此一次累积可能性。
k: 定义返回列表长度的整数。
(四)实例:
import random
# 返回包含10个项目的列表。
# 该列表应包含从指定列表中随机选择的值,并且选择“apple”的可能性应该比其他两个高5倍。
my_list = ["apple", "banana", "cherry"]
result = random.choices(my_list, weights=[5, 1, 1], k=10)
print("随机取得的列表是:", result)
# 输出结果(每运行一次都不一样):
随机取得的列表是: ['apple', 'banana', 'apple', 'cherry', 'apple', 'apple', 'apple', 'apple', 'apple', 'apple']
三、练习题
题目:如何生成5位随机的验证码。
解答:
import random
# 生成5位由数字和字母组成的验证码
def v_code():
code = ""
for i in range(5): # 循环5次,获得5位的验证码字符串
num = random.randint(0, 9) # 从0-9中获取一位随机整数
char = chr(random.randint(65, 90)) # 65-90 对应的是字母 A-Z,调用chr() 方法,将随机获得的整数转成字母
add = random.choice([num, char]) # random.choice() 从序列中随机获取一个元素,可能是数字或字母
code = code + str(add) # 将获取到的随机字符转成字符串,拼接到code
return code
print(v_code())
运行结果:
NA2N8