如何使用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

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告