Python 随机数据:来了解它如何生成
在开发过程中的某个时刻,您可能需要在 Python 中生成随机数据。在这里,我们将看到如何做到这一点。
Python 内置的 random 模块用于生成特定范围内的随机数(例如整数或浮点数)。它还允许生成带有随机元素的字符串和列表。Numpy 库还提供了 random 模块来生成随机数据结构。
我们将通过多种方式应用 Python 内置的 random 模块和 Numpy random 模块。
让我们从一些例子开始!
如何在 Python 中生成 0 和 1 之间的随机数?
Python 提供了一个生成随机数的模块:random 模块。
random 模块最基本的方法是random 方法。
这是 random 方法的作用,它生成一个介于 0 和 1 之间的随机浮点数:
>>> import random
>>> random.random()
0.7854170732801697
>>> random.random()
0.7340120513329158
>>> random.random()
0.5851946653258203
如果我们想生成一个介于 0 和 10 之间的随机浮点数呢?
我们可以使用random.uniform()方法并传递两个参数来定义范围的开始和结束。
>>> random.uniform(1, 10)
1.6010581832190662
>>> random.uniform(1, 10)
6.788702746057039
>>> random.uniform(1, 10)
8.085425419675126
同样,要生成 0 到 100 之间的随机数,我们使用以下命令。
>>> random.uniform(1, 100)
80.84958257046604
>>> random.uniform(1, 100)
24.326120311951602
>>> random.uniform(1, 100)
41.81256739317393
如何使用 Numpy 在 0 和 1 之间生成随机浮点数
Numpy 库还提供了一个生成随机数的模块。
以下是如何使用 Numpy 生成 0 到 1 之间的随机数:
>>> import numpy as np
>>> np.random.random()
0.335309649692459
>>> np.random.random()
0.4965360512032966
>>> np.random.random()
0.7790850138688835
Numpy 还为 Python 随机内置模块提供了我们在上一节中看到的 uniform() 方法。
以下是我们如何使用 Numpy 生成 0 到 10 之间的随机浮点数:
>>> np.random.uniform(0, 10)
6.811695148603444
>>> np.random.uniform(0, 10)
6.888316097297719
>>> np.random.uniform(0, 10)
1.610517388296695
稍后,在本教程中,我们将看到我们还可以使用 Numpy random 模块做什么。
现在让我们生成随机整数
在 Python 中生成一个随机整数
Python random 内置模块的randint()方法生成一个随机整数。
这是当我不带参数调用 randint 方法时会发生什么
>>> random.randint()
Traceback (most recent call last):
File "", line 1, in
random.randint()
TypeError: randint() missing 2 required positional arguments: 'a' and 'b'
根据错误,randint 方法需要两个参数。我们可以使用帮助功能获得更多详细信息。
>>> help(random.randint)
Help on method randint in module random:
randint(a, b) method of random.Random instance
Return random integer in range [a, b], including both end points.
因此,要传递给 randint 方法的 a 和 b 参数定义了生成整数的范围。
使用以下命令,我们返回 1 到 100 范围内的随机整数:
>>> random.randint(1, 100)
11
>>> random.randint(1, 100)
32
>>> random.randint(1, 100)
26
内置的 random 模块还提供了一个名为randrange的方法。让我们找出与randint方法的区别。
这是它的帮助:
randrange(start, stop=None, step=1, _int=) method of random.Random instance
Choose a random item from range(start, stop[, step]).
使用 randint 生成的数字示例
>>> random.randint(1,3)
1
>>> random.randint(1,3)
3
>>> random.randint(1,3)
3
使用 randrange 生成的数字示例
>>> random.randrange(1,3)
1
>>> random.randrange(1,3)
2
>>> random.randrange(1,3)
2
我已经使用上面的示例来说明randint方法包括用于生成随机数的范围内的两个参数。
另一方面,randrange方法从范围中排除第二个参数。
使用 Random 内置模块生成随机数列表
以下代码使用 Python random 内置模块和 while 循环生成随机整数列表:
>>> random_numbers = []
>>> while len(random_numbers) < 10:
random_numbers.append(random.randint(1, 100))
>>> print(random_numbers)
[49, 2, 37, 9, 43, 26, 89, 71, 60, 41]
只要列表少于 10 个数字,就会执行 while 循环内的代码。
下一节展示了一种用更少代码来做到这一点的方法……
使用 Numpy 生成随机数列表
您还可以使用Numpy库生成随机数列表。
下面你可以看到Numpy random模块中的一些方法:
>>> import numpy as np
>>> np.random.ra
np.random.rand( np.random.randn( np.random.random_integers( np.random.ranf(
np.random.randint( np.random.random( np.random.random_sample( np.random.rayleigh(
要生成随机整数列表,我们可以使用 randint() 方法。它与我们在 Python 内置 random 模块中看到的方法同名,但更灵活。
>>> np.random.randint(1, 10, 10)
array([8, 2, 6, 4, 6, 4, 2, 1, 4, 9])
我们已经向该方法传递了三个参数。前两个用于指定生成随机整数的范围的开始(包括)和结束(不包括)
第三个参数用于返回一个包含 10 个元素的 Numpy 数组。
作为第三个参数,我们也可以传递一个整数元组。当我们这样做时会发生以下情况:
>>> np.random.randint(1, 10, (5,5))
array([[4, 1, 9, 3, 4],
[7, 1, 8, 1, 2],
[1, 2, 3, 8, 2],
[9, 1, 3, 6, 8],
[9, 9, 4, 8, 6]])
我们得到一个 5 x 5 的多维数组(或矩阵)。
从 Python 列表中获取随机元素
使用 Python random 模块,您还可以从列表中检索随机元素。
当我们向它们传递字符列表时,让我们比较以下方法的行为:
- 随机选择()
- 随机选择()
- 随机样品()
随机选择()
从序列中返回一个随机元素。
>>> random.choice(['h', 'e', 'l', 'l', 'o'])
'o'
>>> random.choice(['h', 'e', 'l', 'l', 'o'])
'h'
>>> random.choice(['h', 'e', 'l', 'l', 'o'])
'o'
随机选择()
从序列中返回随机元素列表。列表的默认大小为 1。
>>> random.choices(['h', 'e', 'l', 'l', 'o'])
['l']
>>> random.choices(['h', 'e', 'l', 'l', 'o'])
['o']
>>> random.choices(['h', 'e', 'l', 'l', 'o'])
['o']
这是我们如何生成具有 2 个元素的列表。我们必须为参数 k 传递一个值。
>>> random.choices(['h', 'e', 'l', 'l', 'o'], k=2)
['o', 'l']
>>> random.choices(['h', 'e', 'l', 'l', 'o'], k=2)
['o', 'h']
>>> random.choices(['h', 'e', 'l', 'l', 'o'], k=2)
['e', 'l']
随机样品()
它还从序列中返回 k 个随机元素。
当我们使用方法 sample() 简单地将列表传递给它时,我们会返回以下错误:
>>> random.sample(['h', 'e', 'l', 'l', 'o'])
Traceback (most recent call last):
File "", line 1, in
TypeError: sample() missing 1 required positional argument: 'k'
那是因为 sample() 方法需要传递 k 参数。
>>> random.sample(['h', 'e', 'l', 'l', 'o'], k=1)
['l']
>>> random.sample(['h', 'e', 'l', 'l', 'o'], k=2)
['o', 'l']
>>> random.sample(['h', 'e', 'l', 'l', 'o'], k=3)
['h', 'l', 'o']
在 Python 中生成随机字符串
我们可以使用我们在上一节中学到的知识来生成随机字符串。
让我们从以下几点开始:
random.choice(['h', 'e', 'l', 'l', 'o'])
如果我们对上面的表达式应用列表推导式,我们可以创建一个随机字符列表:
>>> [random.choice(['h', 'e', 'l', 'l', 'o']) for i in range(5)]
['l', 'o', 'h', 'o', 'l']
现在我们可以将string join() 方法应用于之前生成的列表:
>>> ''.join([random.choice(['h', 'e', 'l', 'l', 'o']) for i in range(5)])
'holhl'
考虑到 sample() 已经返回一个列表,我们不需要使用 sample() 方法进行列表推导。
我们可以生成一个长度为 5 个字符的随机列表,只需传递 k=5。
>>> ''.join(random.sample(['h', 'e', 'l', 'l', 'o'], k=5))
'loleh'
在进入下一节之前,我将向您展示如何使用 string 模块和 random 模块来生成随机数字字符串、随机字母字符串和随机字母数字字符串。
生成随机数字字符串
>>> import string
>>> string.digits
'0123456789'
>>> ''.join(random.sample(string.digits, k=5))
'31729'
生成随机字母串
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> ''.join(random.sample(string.ascii_letters, k=5))
'qOUtD'
如果您不想混合使用大写和小写字母,也可以使用string.ascii_lowercase或string.ascii_uppercase。
生成随机字母数字字符串
生成字母数字字符串的一种方法是连接string.digits 和 string.ascii_letters。
为了连接使用 string 模块生成的两个字符串,我们将使用 + 运算符。
>>> all_characters = string.digits + string.ascii_letters
>>> all_characters
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> ''.join(random.sample(all_characters, k=5))
'R7moj'
另外,尝试相同的代码,但这次使用string.printable。看看您的随机字符串中还包含哪些其他字符。
如何在 Python 中创建随机 UUID 字符串
要生成一个随机UUID在Python可以使用uuid4功能的的UUID模块。
>>> import uuid
>>> uuid.uuid4()
UUID('df78ded3-d9f0-419d-a556-78eec59d838b')
>>> type(uuid.uuid4())
<class 'uuid.UUID'>
我们返回的对象是 uuid.UUID 类型。要将其转换为字符串,我们可以使用str() 函数。
>>> str(uuid.uuid4())
'2bc19645-bb49-45e6-bfc7-f39304e75d27'
下面你可以看到 uuid 模块中可用的四个函数来生成 UUID(包括我们刚刚使用的 uuid4)。
现在您知道如何在 Python 中生成随机数、随机字符串和随机列表。
- 点赞
- 收藏
- 关注作者
评论(0)