如何使用Python获取具有唯一元素的已排序随机整数列表?


生成随机数是编程、统计学、机器学习模型等中最流行的技术之一。生成具有唯一元素的已排序随机整数列表是这项任务的一个子领域。然而,计算机是确定性机器,因此通过我们的实现生成随机数有时只是一个好主意。在本文中,我们将探讨如何使用Python获取具有唯一元素的已排序随机整数列表。

利用random模块的sample函数

抽样方法从给定总体中生成k个元素的随机样本。它需要两个参数,第一个是元素列表,第二个是样本列表中应该存在的元素数量。

语法

random.sample(iterable object, k)

sample函数需要两个参数:可迭代对象和结果中应该存在的元素数量。它从可迭代对象中返回k个元素作为列表。

sorted(iterable, key=< value of the key > , reverse = <boolean True or False> )

该函数对可迭代对象进行排序。它以可迭代对象作为必需参数。我们还可以使用key参数设置元素的键。我们还可以使用reverse参数返回排序可迭代对象的逆序形式。

示例

在下面的代码中,我们首先导入了Python的random模块。接下来,我们创建了generate_sorted_random_integers函数,该函数接受三个参数:起始范围、结束范围和元素数量。我们使用range方法创建整数范围列表,使用sample方法从中提取一些样本,最后使用sorted方法对数组进行排序。

import random
def generate_sorted_random_integers(start_range, end_range, num_elements):
    random_list = sorted(random.sample(range(start_range, end_range + 1), num_elements))
    return random_list
start_range = 1
end_range = 100
num_elements = 10
random_list = generate_sorted_random_integers(start_range, end_range, num_elements)
print(f"The sorted list of random integers is: {random_list}")

输出

The sorted list of random integers is: [6, 18, 19, 55, 63, 75, 88, 91, 92, 94]

利用Numpy模块

Numpy是Python中用于数值计算的流行库。它还提供生成随机数的函数。我们可以利用sort方法对列表进行排序,并利用choice方法对k个元素进行采样。

语法

numpy.choice(<array name>, size=<shape of the output array> , replace=
<Boolean True or False>, other parameters....)

示例

在下面的示例中,导入Numpy库后,我们定义了generate_sorted_random_integers函数。该函数接受起始值、结束值和元素数量作为参数,并返回一个随机排序的列表。在函数中,我们使用了range函数生成序列,使用choice方法从中选择所需数量的元素,最后使用sort方法对列表进行排序。

import numpy as np
def generate_sorted_random_integers(start_range, end_range, num_elements):
    random_list = np.sort(np.random.choice(range(start_range, end_range + 1), size=num_elements, replace=False))
    return random_list
start_range = 10
end_range = 100
num_elements = 10
random_list = generate_sorted_random_integers(start_range, end_range, num_elements)
print(f"The sorted list of random integers is: {random_list}")

输出

The sorted list of random integers is: [23 27 61 72 74 79 80 90 96 99]

使用列表推导和排序

列表推导是Python开发人员中流行的技术。这种方法的优点是可以将逻辑语句、迭代表达式、条件表达式等组合在一行代码中,并根据它生成列表的元素。这有助于编写一行简洁的代码。

示例

在下面的示例中,我们使用列表推导创建了一个已排序的随机数列表。我们使用Python的random库在所需的范围内创建随机数,并使用sorted方法对随机数列表进行排序。我们调用用户定义的函数,传递必要的参数,并打印结果。

import random
def generate_sorted_random_integers(start_range, end_range, num_elements):
    random_list = sorted([random.randint(start_range, end_range) for _ in range(num_elements)])
    return random_list
start_range = 10
end_range = 50
num_elements = 10
random_list = generate_sorted_random_integers(start_range, end_range, num_elements)
print(f"The sorted list of random integers is: {random_list}")

输出

The sorted list of random integers is: [12, 13, 15, 16, 16, 25, 28, 29, 47, 49]

使用Lambda函数

Lambda函数没有名称,如果代码行数较少,则其行为类似于传统函数。该函数可以接受参数并返回值。但是,该函数没有任何名称。通常,当我们需要快速执行某些操作并且确定此操作不会在其他地方使用时,我们会使用这样的函数。

示例

在下面的代码中,我们使用了lambda函数,该函数接受起始值、结束值和元素数量作为参数。该函数还使用列表推导生成列表的元素。我们使用randint方法生成随机数,并使用sorted方法对列表进行排序。

import random
generate_sorted_random_integers = lambda start_range, end_range, num_elements: sorted([random.randint(start_range, end_range) for _ in range(num_elements)])
start_range = 1
end_range = 100
num_elements = 10
random_list = generate_sorted_random_integers(start_range, end_range, num_elements)
print(f"The sorted list of random integers is: {random_list}")

输出

The sorted list of random integers is: [7, 14, 32, 46, 55, 68, 79, 84, 88, 90]

使用Lambda函数

Pandas是Python中流行的数据分析库。它有一个内置函数apply,我们可以使用它将某些操作应用于所有列表元素。我们可以使用random库生成随机数并应用该方法对元素进行排序。

使用Pandas库和random

Pandas是Python中流行的数据分析库。它有一个内置函数apply,我们可以使用它将某些操作应用于所有列表元素。我们可以使用random库生成随机数并应用该方法对元素进行排序。

语法

DataFrame.apply(<function to apply to the elements>, axis=<0 for rows and 1
for columns> , raw=<boolean True or False> , result_type=None, other
parameters.....)

我们可以在Pandas的DataFrame对象上使用apply方法。它将函数名作为必需参数。该函数将应用于DataFrame的所有元素。axis参数定义我们是否需要将函数与行或列一起使用。convert_type是一个布尔值,指示是否将结果Series的数据类型转换为从函数的返回值推断出的公共类型。

示例

在下面的代码中,我们首先导入了Pandas库,并将其别名为pd。接下来,我们使用DataFrame方法创建了一个名为df的DataFrame。我们将apply方法应用于DataFrame,并对所有数字使用generate_sorted_random_integers函数。generate_sorted_random_integers函数使用抽样方法对一些随机数进行抽样,并使用sort方法对列表数字进行排序。

import pandas as pd
import random
df = pd.DataFrame({
    'start_range': [1, 1, 1],
    'end_range': [100, 100, 100],
    'num_elements': [10, 10, 10]
})
def generate_sorted_random_integers(row):
    random_list = random.sample(range(row[0], row[1] + 1), row[2])
    random_list.sort()
    return random_list
random_list = df[['start_range', 'end_range', 'num_elements']].apply(generate_sorted_random_integers, axis=1).tolist()
print(f"A multidimensional sorted list of random integers with unique elements are as follows: {random_list}")

输出

A multidimensional sorted list of random integers with unique elements are
as follows: [[11, 28, 31, 32, 35, 58, 73, 82, 88, 96], [17, 26, 42, 45, 47,
55, 89, 97, 99, 100], [26, 32, 66, 73, 74, 76, 85, 87, 93, 100]]

结论

在本文中,我们了解了如何使用Python获取具有唯一元素的已排序随机整数列表。random模块是生成随机数最主要的方法,因为它为此目的而设计。但是,为了生成排序列表,我们还需要使用Python中其他一些方法,例如choice、sample、lambda函数等。

更新于:2023年7月28日

浏览量:228

启动您的职业生涯

通过完成课程获得认证

开始
广告