Python 随机数据:来了解它如何生成 | 您所在的位置:网站首页 › python随机取数组元素 › 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.7790850138688835Numpy 还为 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 中生成随机数、随机字符串和随机列表。 |
CopyRight 2018-2019 实验室设备网 版权所有 |