如何使用Python獲取一個排序的隨機整數列表,其中元素唯一?

WBOY
發布: 2023-08-21 20:28:32
轉載
1511 人瀏覽過

如何使用Python獲取一個排序的隨機整數列表,其中元素唯一?

產生隨機數字是程式設計、統計、機器學習模型等領域中最受歡迎的技術之一。產生一個具有唯一元素的排序隨機整數清單是這個任務的一個子領域。然而,計算機是確定性的機器,所以透過我們的實現產生隨機數只是有時一個明智的想法。在本文中,我們將探討如何使用Python來取得一個具有唯一元素的排序隨機整數清單。

使用隨機模組的範例函數

抽樣方法從給定的總體中產生k個元素的隨機樣本。它需要兩個必需的參數,第一個是元素列表,第二個是我們樣本列表中應該包含的元素數量。

文法

random.sample(iterable object, k)
登入後複製

函數sample接受兩個必要的參數:可迭代物件和結果中應該存在的元素數量。它將可迭代物件中的k個元素作為列表傳回。

sorted(iterable, key=< value of the key > , reverse = <boolean True or False> )
登入後複製

此函數對可迭代物件進行排序。它以可迭代物件作為必需參數。我們也可以使用key參數設定元素的鍵。我們也可以使用reverse參數傳回排序後的可迭代物件的反向形式。

Example

的中文翻譯為:

範例

在下面的程式碼中,我們首先導入了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....)
登入後複製

Example

的中文翻譯為:

範例

在下面的範例中,導入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開發人員中流行的技術。這種方法的優點在於可以將邏輯語句、迭代表達式、條件表達式等組合在一行程式碼中,並根據它產生列表的元素。這有助於編寫一行程式碼的單一推導。

Example

的中文翻譯為:

範例

在下面的範例中,我們使用列表推導來建立一個排序的隨機數字列表。我們使用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函數沒有任何名稱,如果程式碼行數較少,它們的行為類似於傳統函數。該函數可以接受參數並傳回值。然而,該函數沒有任何名稱。通常,當我們需要快速執行某些操作,並且確信這些操作不會在其他地方使用時,我們會使用這樣的函數。

Example 

的中文翻譯為:

範例 

在下面的程式碼中,我們使用了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的資料幀物件上使用apply方法。它以函數的名稱作為必需參數。此函數應用於資料幀的所有元素。 axis參數定義了我們是要在行還是列上使用該函數。 convert_type是一個布林值,指示是否將結果Series的資料類型轉換為從函數的傳回值推斷出的通用類型

Example

的中文翻译为:

示例

我们在以下代码中首先导入了Pandas库,并使用pd作为别名。接下来,我们使用DataFrame方法创建了一个名为df的数据帧。我们对数据帧使用了apply方法,并使用generate_sorted_random_integers函数对所有数字进行处理。generate_sorted_random_integers函数使用了sampling方法来随机抽样一些数字,并使用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函数等。

以上是如何使用Python獲取一個排序的隨機整數列表,其中元素唯一?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!