Python 速查手冊

12.4 隨機數 random

random 為產生擬隨機數 (pseudo-random number) 的模組 (mudule) ,有以下常用的函數 (function) 可以產生擬隨機數

函數說明
randint(a, b)回傳從 a 到 b 之間的整數。
choice(seq)回傳從 seq 中的任一元素。
shuffle(x[, random])攪亂 x 中元素的順序。
random()回傳 0 到 1 之間的數字。
亂數又可稱之為隨機數,然而電腦產生的隨機數要在前面加上「擬」字,這是因為由電腦產生的亂數是由演算法 (algorithm) 計算得來的,因此如果條件相同,例如以時間當參數,就會產生一樣的亂數列表,所以電腦產生的亂數在數學上並不是真正的亂數。

以下利用 randint() 產生三個不同範圍的擬隨機數

from random import randint

a = randint(1, 9)
print(a)
b = randint(10, 99)
print(b)
c = randint(100, 999)
print(c)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:rdemo01.py
# 功能:示範 ramdon 模組
# 作者:張凱慶

於命令列執行以上程式

$ python3 rdemo01.py
2
87
578
$

shuffle() 又稱為洗牌演算法,以下程式建立一組 52 張撲克牌後,利用 shuffle() 洗牌,然後發出 5 張牌

from random import shuffle

suit = ["♠️", "♥️", "♦️", "♣️"]
order = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
deck = []
for i in suit:
    for j in order:
        deck.append(i + j)

shuffle(deck)

print(deck.pop())
print(deck.pop())
print(deck.pop())
print(deck.pop())
print(deck.pop())

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:rdemo02.py
# 功能:示範 ramdon 模組
# 作者:張凱慶

於命令列執行以上程式

$ python3 rdemo02.py
♣️6
♦️4
♣️K
♥️10
♣️8
$

上一頁: 12.3 數字精準度 decimal
Python 速查手冊 - 目錄
下一頁: 12.5 基本檔案與目錄處理 osos.path
回 Python 教材首頁