20個Python random模組的程式碼示例

华为云开发者联盟發表於2024-03-13

本文分享自華為雲社群《Python隨機數探秘:深入解析random模組的神奇之處》,作者:檸檬味擁抱。

標準庫random函式大全:探索Python中的隨機數生成

隨機數在電腦科學和資料科學領域中扮演著重要角色,Python的標準庫中提供了random模組,用於生成各種隨機數。本篇部落格將深入探討random模組的各種函式,以及它們的應用場景和程式碼示例。

1. random.random()

random.random()函式返回一個範圍在[0.0, 1.0)之間的隨機浮點數。這是生成均勻分佈隨機數的基礎函式。

import random

random_number = random.random()
print("隨機浮點數:", random_number)

2. random.randint(a, b)

random.randint(a, b)函式生成一個範圍在[a, b]之間的隨機整數。這在需要生成整數隨機數時非常有用。

import random

random_integer = random.randint(1, 10)
print("隨機整數:", random_integer)

3. random.choice(seq)

random.choice(seq)函式從序列seq中隨機選擇一個元素返回。適用於從列表、元組等序列中隨機挑選元素的場景。

import random

my_list = [1, 2, 3, 4, 5]
random_element = random.choice(my_list)
print("隨機選擇的元素:", random_element)

4. random.shuffle(x)

random.shuffle(x)函式用於將序列x中的元素隨機排列,打亂原有順序。

import random

my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print("打亂後的列表:", my_list)

5. random.sample(population, k)

random.sample(population, k)函式從總體population中隨機選擇k個不重複的元素。適用於需要獲取不重複樣本的情況。

import random

my_list = [1, 2, 3, 4, 5]
sampled_list = random.sample(my_list, 3)
print("隨機抽樣後的列表:", sampled_list)

6. random.uniform(a, b)

random.uniform(a, b)函式生成一個範圍在[a, b]之間的隨機浮點數,類似於random.random()但可以指定範圍。

import random

random_float = random.uniform(1.0, 5.0)
print("指定範圍的隨機浮點數:", random_float)

這只是random模組中一小部分函式的介紹,該模組還包括其他函式,如random.gauss()用於生成高斯分佈的隨機數。透過靈活使用這些函式,可以滿足各種隨機數生成的需求。在實際應用中,深入瞭解這些函式的特性和用法,可以幫助提高程式的隨機數生成效率和準確性。

7. random.seed(a=None, version=2)

random.seed(a=None, version=2)函式用於初始化偽隨機數生成器的種子。透過設定相同的種子,可以確保在不同的執行中獲得相同的隨機數序列,這對於除錯和重現實驗結果非常有用。

import random

random.seed(42)  # 設定隨機數生成器的種子為42
random_number = random.random()
print("固定種子下的隨機浮點數:", random_number)

8. random.getrandbits(k)

random.getrandbits(k)函式生成k位元長的隨機整數。適用於需要生成指定位數的隨機整數的情況。

import random

random_bits = random.getrandbits(4)  # 生成4位元長的隨機整數
print("隨機整數(4位元長):", random_bits)

9. random.randrange(start, stop[, step])

random.randrange(start, stop[, step])函式生成一個在指定範圍內以指定步長遞增的隨機整數。

import random

random_integer = random.randrange(0, 10, 2)  # 在0到10之間,以2為步長生成隨機整數
print("隨機整數(指定範圍和步長):", random_integer)

10. random.random()

random.random()函式在前面提到過,但值得注意的是,它生成的是偽隨機數。如果需要更加隨機的種子,可以結合使用time模組獲取當前時間作為種子。

import random
import time

random.seed(time.time())
random_number = random.random()
print("更加隨機的浮點數:", random_number)

透過深入瞭解random模組的這些函式,你可以更好地利用Python進行隨機數生成,滿足各種應用場景的需求。無論是用於模擬實驗、資料取樣還是密碼學領域,random模組提供了強大的工具來處理隨機數。確保在實際應用中選擇適當的函式,並根據需求設定合適的引數,以獲得所需的隨機性。

11. random.triangular(low, high, mode)

random.triangular(low, high, mode)函式生成一個服從三角分佈的隨機浮點數,其中low是分佈的最小值,high是最大值,mode是眾數。

import random

random_triangular = random.triangular(1, 5, 3)  # 生成三角分佈的隨機數
print("三角分佈的隨機浮點數:", random_triangular)

12. random.betavariate(alpha, beta)

random.betavariate(alpha, beta)函式生成一個服從Beta分佈的隨機浮點數,其中alphabeta是分佈的形狀引數。

import random

random_beta = random.betavariate(2, 5)  # 生成Beta分佈的隨機數
print("Beta分佈的隨機浮點數:", random_beta)

13. random.expovariate(lambd)

random.expovariate(lambd)函式生成一個服從指數分佈的隨機浮點數,其中lambd是分佈的逆比例尺度引數。

import random

random_exponential = random.expovariate(2)  # 生成指數分佈的隨機數
print("指數分佈的隨機浮點數:", random_exponential)

14. random.gammavariate(alpha, beta)

random.gammavariate(alpha, beta)函式生成一個服從Gamma分佈的隨機浮點數,其中alpha是形狀引數,beta是尺度引數。

import random

random_gamma = random.gammavariate(2, 1)  # 生成Gamma分佈的隨機數
print("Gamma分佈的隨機浮點數:", random_gamma)

15. random.paretovariate(alpha)

random.paretovariate(alpha)函式生成一個服從帕累託分佈的隨機浮點數,其中alpha是形狀引數。

import random

random_pareto = random.paretovariate(2)  # 生成帕累託分佈的隨機數
print("帕累託分佈的隨機浮點數:", random_pareto)

透過理解這些分佈的生成函式,可以更好地在統計建模、模擬實驗等應用中使用random模組,滿足不同分佈的隨機數需求。選擇適當的分佈和引數將有助於更準確地模擬實際情況。

16. random.weibullvariate(alpha, beta)

random.weibullvariate(alpha, beta)函式生成一個服從威布林分佈的隨機浮點數,其中alpha是形狀引數,beta是尺度引數。

import random

random_weibull = random.weibullvariate(2, 1)  # 生成威布林分佈的隨機數
print("威布林分佈的隨機浮點數:", random_weibull)

17. random.gauss(mu, sigma)

random.gauss(mu, sigma)函式生成一個服從高斯分佈(正態分佈)的隨機浮點數,其中mu是均值,sigma是標準差。

import random

random_gaussian = random.gauss(0, 1)  # 生成高斯分佈的隨機數
print("高斯分佈的隨機浮點數:", random_gaussian)

18. random.lognormvariate(mu, sigma)

random.lognormvariate(mu, sigma)函式生成一個服從對數正態分佈的隨機浮點數,其中mu是對數均值,sigma是對數標準差。

import random

random_lognormal = random.lognormvariate(0, 1)  # 生成對數正態分佈的隨機數
print("對數正態分佈的隨機浮點數:", random_lognormal)

19. random.vonmisesvariate(mu, kappa)

random.vonmisesvariate(mu, kappa)函式生成一個服從von Mises分佈(圓周分佈)的隨機浮點數,其中mu是分佈的均值,kappa是分佈的集中度引數。

import random

random_vonmises = random.vonmisesvariate(0, 1)  # 生成von Mises分佈的隨機數
print("von Mises分佈的隨機浮點數:", random_vonmises)

20. random.choices(population, weights=None, k=1)

random.choices(population, weights=None, k=1)函式從總體population中以權重weights進行隨機抽樣,返回k個元素。

import random

choices_population = [1, 2, 3, 4, 5]
weights = [0.1, 0.2, 0.3, 0.2, 0.2]
random_choices = random.choices(choices_population, weights=weights, k=3)
print("帶權重的隨機抽樣結果:", random_choices)

這些函式覆蓋了random模組中的主要隨機數生成方法,可以滿足多樣化的需求。在實際應用中,根據具體場景選擇適當的分佈和函式,合理設定引數,能夠更好地模擬真實情況,支援科學計算和資料分析。

總結

在本文中,我們深入探討了Python標準庫中的random模組,介紹了各種隨機數生成函式以及它們的應用場景和程式碼示例。從生成均勻分佈的random.random()到更復雜的分佈如三角分佈、Beta分佈、威布林分佈等,random模組提供了豐富的工具來滿足不同隨機數需求。

我們學習瞭如何生成隨機整數、隨機浮點數,以及如何在序列中進行隨機選擇和打亂。探討了種子的設定和偽隨機數生成器的初始化,以及如何應用在實驗重現和除錯過程中。同時,透過深入瞭解各種分佈的生成函式,我們能夠更好地模擬和處理不同領域的實際問題。

最後,我們強調了在實際應用中,根據具體場景選擇適當的隨機數生成函式是非常關鍵的。合理設定引數,選擇合適的分佈,有助於提高模擬的準確性和實驗的可重現性。random模組為科學計算、模擬實驗和資料分析等領域提供了強大的工具,透過靈活應用這些函式,我們能夠更好地處理各種隨機性需求。

點選關注,第一時間瞭解華為雲新鮮技術~

相關文章