Python的random模塊提供了許多用於生成隨機數的函數。其中,random.sample(sequence, k)函數可用於從指定序列中隨機選取固定數量的元素,並返回這些元素的列表。
一、函數用法
random.sample(sequence, k)函數需要兩個參數:一個是具有多個元素的序列,另一個是要選取的元素的數量。如果要從一個序列中選取長度為k的隨機子序列,則可以使用以下方法:
import random data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] sample_data = random.sample(data, k=3) print(sample_data)
該程序將從data中選取3個隨機元素,並輸出該子序列:
[7, 3, 1]
如果要在隨機過程中避免重複元素,可以使用random.sample()函數的變種。在這種情況下,選取的數量k不能大於序列的長度。如下所示:
import random data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] sample_data = random.sample(data, k=len(data)) print(sample_data)
此程序將對data序列進行完全隨機化,並輸出:
[3, 1, 6, 5, 8, 10, 9, 4, 2, 7]
二、應用實例
隨機選樣是數據分析的一項常見操作。例如,我們可以使用random.sample()函數來生成一個樣本,以對總體數據的分佈進行推斷。以下是一個簡單的例子:
import random import numpy as np import matplotlib.pyplot as plt data = np.random.normal(0, 1, 10000) # 生成一個隨機正態分佈的序列 sample_data = random.sample(data.tolist(), k=1000) plt.hist(data, bins=50, alpha=0.5, color='b') # 繪製總體分佈的直方圖 plt.hist(sample_data, bins=50, alpha=0.5, color='r') # 繪製樣本分佈的直方圖 plt.show()
此程序將生成一個隨機正態分佈的序列,然後選取1000個樣本點進行分析。通過在同一個畫布上繪製總體分佈和樣本分佈的直方圖,可以很容易地比較它們的相似之處以及差異之處。
三、使用小技巧
random.sample()函數還有一種應用情景,即從字符串或列表中隨機選擇一個元素。以下是一些例子:
import random s = 'abcdefghijklmnopqrstuvwxyz' random_char = random.sample(s, k=1) print(random_char)
此程序將在字母表中隨機選取一個字母,並輸出:
['m']
在下一個例子中,我們從列表pizza_choices中隨機選擇一種披薩,以為晚餐做決定提供參考:
import random pizza_choices = ['cheese', 'pepperoni', 'sausage', 'vegetable', 'hawaiian'] pizza_choice = random.sample(pizza_choices, k=1) print("Tonight's pizza special: " + pizza_choice[0] + " pizza")
該程序將從pizza_choices序列中隨機選取一種披薩,並輸出結果:
Tonight's pizza special: vegetable pizza
四、結語
random.sample()函數是Python中一個強大的隨機選樣工具。它不僅可以從數字列表中隨機選取樣本,還可以從字符串、元組、集合等序列中選取元素。此外,該函數還可以用於生成隨機序列、數據採樣、統計分佈推斷等多種應用情景。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/293146.html