在 Python 中,我们可以使用 random 模块来生成各种随机数,主要包括以下 3 种:
- 随机整数
- 随机浮点数
- 随机序列
Python 生成随机整数
在 Python 中,如果想要获取随机整数,我们可以使用 random 模块的 2 个函数:randint() 和 randrange()。
1. randint()
在 Python 中,randint() 函数用于生成指定范围内的随机整数。
语法:
random.randint(start, stop)说明:
randint(start, stop) 表示生成的随机整数范围是 [start, stop](即 start≤n≤stop),包含 start 也包含 stop。其中 stop 一定要大于或等于 start,否则会报错。
另外,randint(start, stop) 等价于 randrange(start, stop+1)。
示例 1:随机生成 0~100 之间的整数
import random
result = random.randint(0, 100)
print(result)运行结果如下。
93分析:
每次运行的结果都是不同的,否则就不是随机数了。后面示例中的随机数亦是如此。randint(start, stop) 中的 start 和 stop 也可以是负数,比如 randint(-100, -50) 表示生成 -100~-50 之间的随机整数,小伙伴们可以自行试一下。
示例 2:测试取值范围
import random
result = random.randint(1, 2)
print(result)运行结果如下。
1分析:
当多次运行上面代码时,结果可能是 1 或 2。这也说明,randint(x, y) 的取值范围是包含 x 也包含 y 的。
2. randrange()
在 Python 中,randrange() 函数表示在指定范围内,按照一定 “步数” 递增来生成一个随机整数。
语法:
random.randrange(start, stop, step)说明:
参数 start 表示开始值,参数 stop 表示结束值,参数 step 表示步长。所谓 “步长”,这里指的是 “间隔” 或 “递增量”。
randrange(start, stop, step) 表示生成的随机整数范围是 [start, stop)(即 start≤n<stop),包含 start 但不包含 stop。此外,start 和 stop 必须是整数,不然就会报错。
示例 3:随机生成 0~100 之间的偶数
import random
result = random.randrange(0, 101, 2)
print(result)运行结果如下。
64分析:
random.randrange(0, 101, 2) 其实相当于从 [0, 2, 4, …, 100] 这个列表中随机获取一个元素。
思考: 为什么上面的 randrange() 函数要写成 randrange(0, 101, 2),而不是写成 randrange(0, 100, 2) 呢?
Python 生成随机浮点数
在 Python 中,如果想要获取随机浮点数,我们可以使用 random 模块的 2 个函数:random() 和 uniform()。
1. random()
在 Python 中,random() 函数用于生成 0~1 之间的随机浮点数。
语法:
random.random()说明:
random() 没有参数,它表示生成的随机浮点数范围是:0≤n<1。特别注意,这里的范围是不包含 1 的。
示例 4:生成 0~1 之间的浮点数
import random
result = random.random()
print(result)运行结果如下。
0.7966744498415815分析:
random() 函数生成的随机浮点数位数比较多,我们可以使用 round() 函数来四舍五入取 n 位小数。
示例 5:取前 n 位小数
import random
rnd = random.random()
print(round(rnd, 2))运行结果如下。
0.69分析:
round(rnd, 2) 表示使用 round() 函数来对 rnd 四舍五入取前两位小数。
2. uniform()
在 Python 中,uniform() 函数用于生成 “指定范围内” 的随机浮点数。
语法:
random.uniform(start, stop)说明:
uniform(start, stop) 表示生成的随机浮点数范围是 [start, stop](即 start ≤ n ≤ stop),包含 start 但不包含 stop。
提示: 与 randint() 不同,uniform(start, stop) 并没有严格要求 start 必须小于 stop。即使你写成 random.uniform(5, 1),它也能正常生成 1.0 到 5.0 之间的随机浮点数,而不会报错。
示例 6:生成随机浮点数
import random
result1 = random.uniform(0, 5)
result2 = random.uniform(1, 1)
print(result1)
print(result2)运行结果如下。
2.688527779625643
1.0分析:
对于 uniform(start, stop) 来说,当 stop 与 start 相等时,返回值只有一种情况:stop。
Python 生成随机序列
在 Python 中,如果想要对序列进行随机操作,我们可以使用 random 模块的 3 个函数:choice()、sample() 和 shuffle()。
1. choice()
在 Python 中,choice() 函数用于从序列中随机获取一个元素。
语法:
random.choice(seq)说明:
参数 seq 表示一个序列(列表、元组或字符串)。
示例 7:choice() 用于序列
import random
# 用于列表
animals = ['ant', 'bee', 'cat', 'dog', 'ewe']
print(random.choice(animals))
# 用于元组
nums = (3, 9, 1, 12, 50, 21)
print(random.choice(nums))
# 用于字符串
s = 'Python'
print(random.choice(s))运行结果如下。
cat
9
h2. sample()
在 Python 中,sample() 函数用于从序列中随机获取 n 个元素,然后组合成一个列表。sample,也就是 “样本” 的意思。
语法:
random.sample(seq, n)说明:
参数 seq 表示一个序列,参数 n 表示获取 n 个元素。使用 sample() 函数生成的列表中,每一个元素的值都是不重复的。
示例 8:sample() 基本用法
import random
# 用于列表
animals = ['ant', 'bee', 'cat', 'dog', 'ewe']
print(random.sample(animals, 3))
# 用于元组
nums = (3, 9, 1, 12, 50, 21)
print(random.sample(nums, 3))
# 用于字符串
s = 'Python'
print(random.sample(s, 3))运行结果如下。
['dog', 'bee', 'ant']
[3, 50, 9]
['P', 'o', 'n']3. shuffle()
在 Python 中,我们可以使用 shuffle() 函数将一个列表的元素顺序打乱。shuffle,就是 “混乱” 的意思。
语法:
random.shuffle(list)说明:
shuffle() 函数只能用于列表,不能用于元组、字符串等。
示例 9:shuffle() 基本用法
import random
nums = [3, 9, 1, 12, 50, 21]
random.shuffle(nums)
print(nums)
animals = ['ant', 'bee', 'cat', 'dog', 'ewe']
random.shuffle(animals)
print(animals)运行结果如下。
[12, 1, 21, 50, 9, 3]
['cat', 'bee', 'ant', 'ewe', 'dog']