溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中的隨機函數random怎么用

發布時間:2021-12-29 10:26:11 來源:億速云 閱讀:166 作者:小新 欄目:開發技術
# Python中的隨機函數random怎么用

在Python編程中,`random`模塊是生成偽隨機數的核心工具,廣泛應用于游戲開發、數據采樣、密碼學等領域。本文將詳細介紹`random`模塊的常用函數及實際應用場景。

## 1. random模塊基礎

### 1.1 模塊導入
使用前需先導入模塊:
```python
import random

1.2 基本隨機函數

  • random.random()
    生成[0.0, 1.0)范圍內的浮點數

    print(random.random())  # 輸出類似 0.5488135039273248
    
  • random.uniform(a, b)
    生成[a, b]范圍內的隨機浮點數

    print(random.uniform(3, 7))  # 輸出 4.191519...
    

2. 整數隨機數生成

2.1 randint()

生成閉區間[a, b]的整數:

dice = random.randint(1, 6)  # 模擬骰子

2.2 randrange()

更靈活的整數生成:

# 生成0-9的偶數
even_num = random.randrange(0, 10, 2)

3. 序列操作函數

3.1 choice()

從序列中隨機選擇:

colors = ['red', 'green', 'blue']
print(random.choice(colors))  # 可能輸出'green'

3.2 choices()

帶權重的多選(Python 3.6+):

# 權重為3:1:1
print(random.choices(colors, weights=[3,1,1], k=2))

3.3 shuffle()

原地打亂序列:

cards = ['A', 'K', 'Q', 'J']
random.shuffle(cards)  # 變為['Q', 'A', 'J', 'K']等

3.4 sample()

無重復抽樣:

# 從1-100中選5個不重復數
lottery = random.sample(range(1,101), 5)

4. 高級應用

4.1 設置隨機種子

random.seed(42)  # 使結果可復現

4.2 概率分布

  • 高斯分布:random.gauss(mu, sigma)
  • 指數分布:random.expovariate(lambd)

5. 實際應用案例

5.1 驗證碼生成

def generate_code(length=6):
    chars = string.ascii_letters + string.digits
    return ''.join(random.choices(chars, k=length))

5.2 蒙特卡洛模擬

def estimate_pi(n):
    inside = 0
    for _ in range(n):
        x, y = random.random(), random.random()
        if x**2 + y**2 <= 1:
            inside += 1
    return 4 * inside / n

6. 注意事項

  1. 非加密安全:如需加密級隨機數,應使用secrets模塊
  2. 偽隨機性:所有結果均基于算法生成
  3. 種子影響:相同種子產生相同序列

7. 完整示例

import random

# 模擬抽獎系統
prizes = ['一等獎', '二等獎', '三等獎', '謝謝參與']
weights = [0.01, 0.09, 0.3, 0.6]

result = random.choices(prizes, weights, k=10)
print("抽獎結果:", result)

# 生成隨機密碼
import string
password = ''.join(random.sample(string.ascii_letters + string.digits, 12))
print("生成密碼:", password)

通過掌握random模塊的這些功能,你可以輕松實現各種隨機化需求,但需注意根據具體場景選擇合適的函數。 “`

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女