Python 生成随机数

在 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()。

注意: 序列” 并非特指某一种数据结构,而是泛指某一类的数据结构。在 Python 中,序列包含 3 种:列表元组字符串

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
h

2. 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']

上一篇: Python 求绝对值

下一篇: Python 文件路径

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号