Python 取随机数
介绍
在编程中,经常需要使用随机数。随机数是一种在一定范围内没有规律可循的数值。Python 提供了多种方式来生成随机数,本文将详细介绍这些方法。
random 模块
Python 的 random
模块提供了生成随机数的函数。使用前需要先导入模块:
import random
生成随机整数
random
模块提供了 randint(a, b)
函数来生成指定范围内的随机整数。这个函数返回的随机整数 n
满足 a <= n <= b
。
下面的示例生成 1 到 10 之间的随机整数:
import random
num = random.randint(1, 10)
print(num)
输出结果可能为:
7
生成随机浮点数
random
模块还提供了 random()
函数来生成 0 到 1 之间的随机浮点数。这个函数返回的随机浮点数 x
满足 0 <= x < 1
。
下面的示例生成 0 到 1 之间的随机浮点数:
import random
num = random.random()
print(num)
输出结果可能为:
0.5730803318224345
生成随机列表元素
random
模块的 choice(seq)
函数可以从序列 seq
(如列表或元组)中随机选择一个元素并返回。示例代码如下:
import random
fruits = ['apple', 'banana', 'orange', 'strawberry']
selected_fruit = random.choice(fruits)
print(selected_fruit)
输出结果可能为:
banana
random
模块还提供了 sample(population, k)
函数,可以从给定种群或序列 population
中随机选择 k
个元素作为一个新的列表返回。示例代码如下:
import random
letters = ['a', 'b', 'c', 'd', 'e']
selected_letters = random.sample(letters, 3)
print(selected_letters)
输出结果可能为:
['a', 'c', 'e']
打乱列表顺序
random
模块的 shuffle(x)
函数可以打乱列表 x
的顺序。这个函数没有返回值,直接修改原列表。示例代码如下:
import random
my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print(my_list)
输出结果可能为:
[3, 2, 4, 1, 5]
生成随机字符串
random
模块还可以用来生成随机字符串。下面的示例生成一个由随机字符组成的字符串:
import random
import string
length = 6
random_string = ''.join(random.choices(string.ascii_uppercase + string.digits, k=length))
print(random_string)
输出结果可能为:
2GK5B9
这个示例中,使用了 random.choices(population, k)
函数来从给定的 population
中随机选取 k
个元素,并将其拼接成字符串。
secrets 模块
Python 3.6 引入了 secrets
模块,用于生成高安全性的随机数。与 random
模块不同,secrets
模块可用于安全地生成密码、验证码等。
首先需要导入模块:
import secrets
生成随机整数
secrets
模块提供了 randbelow(n)
函数来生成小于 n
的随机整数。
下面的示例生成一个小于 10 的随机整数:
import secrets
num = secrets.randbelow(10)
print(num)
输出结果可能为:
3
生成随机字节序列
secrets
模块的 token_bytes(n)
函数可以生成一个包含 n
个随机字节的字节序列。示例代码如下:
import secrets
bytes = secrets.token_bytes(16)
print(bytes)
输出结果可能为:
b'\xd5{\x9dq\x0f\x1cD8\x06[y!$'
生成随机 URL 安全字符串
secrets
模块还提供了 token_urlsafe(n)
函数来生成长度为 n
的 URL 安全的随机字符串。示例代码如下:
import secrets
token = secrets.token_urlsafe(8)
print(token)
输出结果可能为:
-zH3r6cT
使用 secrets
模块生成的随机字符串是适用于密码等敏感数据的高安全性随机字符串。
总结
本文介绍了 Python 中生成随机数的方法。random
模块适用于一般的随机数生成,secrets
模块提供了生成高安全性随机数的功能。
请注意,在某些需要高安全性的场景下,使用 secrets
模块生成的随机数比 random
模块更可靠。