Python 随机数据:来了解它如何生成 您所在的位置:网站首页 python随机取数组元素 Python 随机数据:来了解它如何生成

Python 随机数据:来了解它如何生成

#Python 随机数据:来了解它如何生成| 来源: 网络整理| 查看: 265

在开发过程中的某个时刻,您可能需要在 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())

我们返回的对象是 uuid.UUID 类型。要将其转换为字符串,我们可以使用str() 函数。

>>> str(uuid.uuid4()) '2bc19645-bb49-45e6-bfc7-f39304e75d27'

下面你可以看到 uuid 模块中可用的四个函数来生成 UUID(包括我们刚刚使用的 uuid4)。

在 Python 中生成随机 UUID

现在您知道如何在 Python 中生成随机数、随机字符串和随机列表。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有