首頁 >後端開發 >Python教學 >如何在Python中實現加權隨機選擇?

如何在Python中實現加權隨機選擇?

PHPz
PHPz轉載
2023-09-11 21:45:02692瀏覽

如何在Python中實現加權隨機選擇?

Python 是一種靈活而有效的程式語言,提供了廣泛的底層功能和函式庫來改進複雜的編碼任務。其中一項任務是執行加權不規則決策,這是一種可衡量的策略,其中每件事都有預先定義的被挑選的可能性。與簡單隨機選擇(其中每個項目被選擇的機會相同)不同,加權隨機選擇允許我們指定每個項目被選擇的可能性,該可能性可能會有所不同。本文旨在全面了解如何在 Python 中獲得加權隨機選擇。

文法

Python 中促進加權隨機選擇的主要方法是 random.choices()。這是它的基本語法:

random.choices(population, weights=None, cum_weights=None, k=1)
  • 人口是一個必要的組成部分。您將從該清單中進行選擇。

  • 沒有義務提供重量。與總體清單中每個單獨成員相對應的權重清單。

  • cum_weights 是一個完全可選的欄位。已累積的權重列表。

  • 字母 k 不是必要的。整數形式的數字,指定要選擇的項目數。預設值為 1。

演算法

為了更好地理解加權隨機選擇的操作,請遵循以下逐步演算法:

  • 在 Python 中匯入 random 模組。

  • 定義總體,即您要從中選擇的元素清單。

  • 定義權重,即與總體中每個元素相對應的機率列表。確保權重與整體元素保持一致。

  • 使用 random.choices() 方法,指定要選擇的總體、權重和元素數量。

  • 執行程式碼並分析結果。

方法 1:使用 random.choices()

使用帶有權重參數的 random.choices() 方法:此方法使用 Python 的內建函數,明確提供每個元素的權重。

範例

import random

population = ['Red', 'Blue', 'Green']
weights = [0.6, 0.3, 0.1]

chosen = random.choices(population, weights, k=5)
print(chosen)

輸出

['Red', 'Green', 'Blue', 'Blue', 'Blue']

說明

此 Python 腳本利用隱式不規則模組,尤其是 random.choices() 函數,根據最近表徵的清單產生加權不規則確定。可以從標題為「population」的清單中選擇以下選項:「紅色」、「藍色」和「綠色」。 「權重」清單表示以以下比例選擇每個組件的幾率:相應的 60%、30% 和 10%。腳本從「population」變數中隨機選擇五個項目,同時考慮已定義的「權重」。這是透過使用合適的參數來呼叫 random.choices 功能來實現的。 「k」參數的值顯示了要在池中查看的事物的數量。之後,將列印所選的元素。

方法 2:使用 numpy.random.choice()

使用 numpy.random.choice():此方法適用於 numpy 庫,它是一個強大的數值運算工具,也支援加權隨機選擇。

範例

import numpy as np

population = ['Red', 'Blue', 'Green']
weights = [0.6, 0.3, 0.1]

chosen = np.random.choice(population, 5, p=weights)
print(chosen)

輸出

['Red' 'Red' 'Red' 'Red' 'Blue']

說明

為了執行加權隨機選擇,該腳本使用 numpy 函式庫並呼叫 numpy.random.choice() 函數。 「population」和「weights」清單的定義方式與第一個代碼相同。另一方面,使用此方法,機率參數由字母 p 表示,而不是單字「權重」。腳本透過使用參數population、5 和p=weights 呼叫函數np.random.choice,從「population」變數中隨機選擇五個項目。該選擇基於已指定的機率。這段程式碼沒有像第一段程式碼那樣產生列表,而是產生一個包含所有所選元素的 numpy 陣列。

結論

在本文中,我們探討了兩種在 Python 中利用內建函數和外部函式庫實現加權隨機選擇的重要方法。使用 random.choices() 和 numpy.random.choice() 方法,您可以有效地操縱清單中每個元素的機率,從而更好地控制隨機選擇。

理解並正確實施加權隨機選擇對於各種場景(從簡單的遊戲到複雜的數據科學任務)都是至關重要的,因為它反映了生活中機率的現實不均勻分佈。透過掌握這項技術,您就為您的 Python 程式設計工具包添加了一個重要的工具。

請記住,random.choices() 函數和 numpy.random.choice() 不限於加權隨機選擇 - 它們提供更多功能。請隨意深入研究這些函式庫,以釋放 Python 的全部潛力。請記住,練習是掌握任何概念的關鍵,因此請繼續編碼並繼續探索!

以上是如何在Python中實現加權隨機選擇?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除