不間斷 Python 挑戰 Day 7 - random()模組

閱讀時間約 6 分鐘
當我們需要在程式中模擬或實作一些隨機發生的事件,例如模擬猜拳、丟骰子的結果,便需要程式可以根據開發者輸入的數值範圍、型態等,隨機產生一個結果,而Python的random()函數便是用於實現這個功能。

調用random()函數

使用import導入random模組。
import random

產生隨機整數

以下幾個方法可以產生指定區間的隨機整數:
randrange([start, ]stop[, step])
  • start:指定區間的起始值,若沒有輸入則預設為0。
  • stop:指定區間的結束值,不包含stop。
  • step:區間遞增的間隔,若沒有輸入則預設為1。
randint(a, b)
  • 產生一個[a, b]區間內的隨機整數。
例如,以下的程式碼會隨機產生1到9之間的整數:
# generate a random integer between 1 and 9
rand_int = random.randrange(1, 10, 1)
print(rand_int)

# generate a random interger between 1 and 9
rand_int = random.randint(1, 9)
print(rand_int)
輸出結果每個人會不同:
5
1

產生隨機浮點數

以下幾個方法可以產生隨機浮點數:
random.random()
  • 產生一個[0.0, 1.0)區間內的隨機浮點數。
random.uniform(a,b)
  • 產生一個[a, b](如果a ≤ b)或[b, a](如果b < a)區間內的隨機浮點數。
random.expovariate(λ)
  • 產生一個服從母數為λ的指數分布區間內的隨機浮點數。
random.gauss(μ, σ)
random.normalvariate(μ, σ)
  • 產生一個平均為μ、標準差為σ的常態分布區間內的隨機浮點數。
以下範例產生隨機浮點數:
# generate a random floating point between [0.0, 1.0)
rand_float = random.random()
print(rand_float)

# generate a random floating point corresponding to an uniform distribution between [0, 1]
rand_float = random.uniform(0, 1)
print(rand_float)

# generate a random floating point corresponding to a exponential distribution with lambda = 0.1
rand_float = random.expovariate(0.1)
print(rand_float)

# generate a random floating point corresponding to a gaussian distribution with mean = 0 and standard deviation = 1
rand_float = random.gauss(0, 1)
print(rand_float)

# generate a random floating point corresponding to a normal distribution with mean = 0 and standard deviation = 1
rand_float = random.normalvariate(0, 1)
print(rand_float)
輸出結果同樣每個人會不同:
0.9994071238802772
0.32634858726972726
25.89070912867779
-0.010389111766063115
-0.564451531564574

產生隨機序列

和隨機整數及隨機浮點數相同,我們也可在一組序列資料中隨機取出一筆資料或資料集合:
random.shuffle(x)
  • 使序列資料x重新隨機排列。
random.choice(x)
  • 從序列資料x中隨機取出一個元素。
random.choices(x, weights, cum_weights, k)
  • 從序列資料x中隨機取出k個元素,並可設定每個元素取出的權重(weights)或累積權重(cum_weights)。
random.sample(x, k)
  • 從序列資料x中隨機取出k個元素。
以下範例以之前在串列提過的例子,展示隨機序列的結果:
# random list
cities = ["台北", "桃園", "新竹", "台中", "台南"]
random.shuffle(cities)
print(cities)

# random item from a list
rand_city = random.choice(cities)
print(rand_city)

# random items from a list with different weights
rand_city = random.choices(cities, [10, 20, 30, 40, 50], k=2)
print(rand_city)

# random sample from a list
rand_city = random.sample(cities, 2)
print(rand_city)
輸出結果也是每個人會不同:
['台南', '桃園', '新竹', '台北', '台中']
台南
['台北', '台南']
['台中', '新竹']

程式範例

為什麼會看到廣告
46會員
36內容數
留言0
查看全部
發表第一個留言支持創作者!
Wei-Jie Weng的沙龍 的其他內容
當我們需要重複一系列有規則的行為,例如從1加到100,或是取得物件裡面的每一個元素,例如將串列裡面的每個元素印出,重複地撰寫程式碼顯然不切實際,for迴圈便是可以讓程式對可迭代物件(iterable object)執行迭代(iteration)的工具。
前面提到變數為程式儲存資料的地方,一個變數可以儲存一個學生的成績、一個人的身高、或是一個人名等,但如果多人的資料要管理,為每個人設計一個變數顯然就有點不切實際,串列就是用來解決這樣的問題。
當我們的程式需要根據某些狀況做出判斷,例如某些條件成立的話,程式就對應做出某種行為,這時單純從頭執行到尾的程式便無法滿足我們的需求,因此便需引進流程控制的概念,也就是if敘述以及其相關的語法,來讓程式可以完成更複雜的工作。
不間斷 Python 挑戰 Day 3 - 基本數學運算
不間斷 Python 挑戰 Day 2 - 註解、變數與資料型態
不間斷 Python 挑戰 Day 1 - 開發環境
當我們需要重複一系列有規則的行為,例如從1加到100,或是取得物件裡面的每一個元素,例如將串列裡面的每個元素印出,重複地撰寫程式碼顯然不切實際,for迴圈便是可以讓程式對可迭代物件(iterable object)執行迭代(iteration)的工具。
前面提到變數為程式儲存資料的地方,一個變數可以儲存一個學生的成績、一個人的身高、或是一個人名等,但如果多人的資料要管理,為每個人設計一個變數顯然就有點不切實際,串列就是用來解決這樣的問題。
當我們的程式需要根據某些狀況做出判斷,例如某些條件成立的話,程式就對應做出某種行為,這時單純從頭執行到尾的程式便無法滿足我們的需求,因此便需引進流程控制的概念,也就是if敘述以及其相關的語法,來讓程式可以完成更複雜的工作。
不間斷 Python 挑戰 Day 3 - 基本數學運算
不間斷 Python 挑戰 Day 2 - 註解、變數與資料型態
不間斷 Python 挑戰 Day 1 - 開發環境
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
十年前,我跟小悟參加了台南政府所舉辦的 24 小時不間斷進食比賽,當年,我以兩分之差,沒擠進金榜。在挑戰時間內,來不及吃狀元糕跟芋頭八寶冰,以致失掉食物王的頭銜。十年後,小悟說,要不要再來回味當年勇?我知道,年輕的我胃袋能撐船,可逝去的青春,最先反映在食慾上。我笑著說不了......
Thumbnail
持著前作的風格,《蜘蛛人:穿越新宇宙》在色彩或畫面的呈現上依舊大膽、前衛,並且嘗試藉由多重宇宙的「優勢」,在成長動畫的既有敘事上,嘗試更多不同的可能性。精彩的安排讓觀看這部作品讓成為十足的享受,並賦予了觀眾再次進場支持的充分動機。
Thumbnail
節目這邊聽 📎錄製時間: 2023.10 汪汪隊立大功! MRT(Mission Readiness Test)是難度最高的國際搜救犬認證! 但是我們有兩位英雄(一人一汪)順利通過這次的認證,拿到了優良的成績! 讓我們歡迎領犬員羅浩芳!就讓她帶著小編、江小姐還有各位聽眾,一起了解這次搜救犬
Thumbnail
這一陣子不少投資標的都在上漲 連成長性沒有科技股強的食品股也在慢慢上升中 今天記錄一下自己食品股大成的最新績效 身為雞肉雙雄的其中一雄 除了飼料、雞肉、雞蛋以外,還跨足了沙拉油、豬肉、海鮮、餐廳等事業體 幾乎可說是一檔食品ETF(還不用付管理費),進去它的官網就可以看到許多不同的事業體
Thumbnail
你現在也許單一個句子可以說得溜,但持續說話覺得尷尬的原因在於:缺乏連接詞。好的連接詞會讓口語表達更精確有力,讓韓國人聽到你說的話不需要猜測意思或重新思考,表達能力也就跟著上升!
Thumbnail
喜歡音樂的羅小咩,不定期將在周六中午12:00與你聊聊戲劇中的音樂,還有音樂中的戲劇。本次介紹:惡作劇之吻、慶餘年、Good Casting、溫柔時光、鋼之鍊金術師這五個戲劇作品的主題曲。
Thumbnail
喜歡音樂的羅小咩,不定期將在周六中午12:00與你聊聊戲劇中的音樂,還有音樂中的戲劇。本次介紹:必娶女人、kill me heal me、錦衣之下、101次求婚、灌籃高手這五個戲劇作品的主題曲。
近期許多地方受到洪水以及颱風的侵襲 但包你發的線路及網路穩定度完全不受到影響 大家可以放心,我們是24小時全年無休不間斷 就算你半夜三點要玩包你發也完全OK 不會像有些系統只在白天開放 而同樣的穩定度也是一大考驗 在這種供電不穩定的情況 也有可能導致其他遊戲斷線 但包你發機房穩定、有備用電源 完全不
Thumbnail
疫情長時間帶來了減少開放性的社交機會,最直接的影響莫過於情緒勒索造成的封閉性失調,感謝國立台灣戲曲學院傑出校友,為身心障礙的大寶寶們帶來一系列精彩的演出,透過精心策劃的舞蹈及雜耍表演,帶給住民體驗了跟以往不同的志工服務內容,見到了久違住民
Thumbnail
每一次TDCA的關愛陪伴,都讓受贈的服務對象感受到滿滿的幸福感,一起協力完成手作皮革鑰匙圈,每一針每一線都在訓練孩子們手眼協調的肢體,透過不同花色皮革來搭配,不僅訓練孩子對色彩的辨識能力,同時也在培養眼界裡的審美觀噢!
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
十年前,我跟小悟參加了台南政府所舉辦的 24 小時不間斷進食比賽,當年,我以兩分之差,沒擠進金榜。在挑戰時間內,來不及吃狀元糕跟芋頭八寶冰,以致失掉食物王的頭銜。十年後,小悟說,要不要再來回味當年勇?我知道,年輕的我胃袋能撐船,可逝去的青春,最先反映在食慾上。我笑著說不了......
Thumbnail
持著前作的風格,《蜘蛛人:穿越新宇宙》在色彩或畫面的呈現上依舊大膽、前衛,並且嘗試藉由多重宇宙的「優勢」,在成長動畫的既有敘事上,嘗試更多不同的可能性。精彩的安排讓觀看這部作品讓成為十足的享受,並賦予了觀眾再次進場支持的充分動機。
Thumbnail
節目這邊聽 📎錄製時間: 2023.10 汪汪隊立大功! MRT(Mission Readiness Test)是難度最高的國際搜救犬認證! 但是我們有兩位英雄(一人一汪)順利通過這次的認證,拿到了優良的成績! 讓我們歡迎領犬員羅浩芳!就讓她帶著小編、江小姐還有各位聽眾,一起了解這次搜救犬
Thumbnail
這一陣子不少投資標的都在上漲 連成長性沒有科技股強的食品股也在慢慢上升中 今天記錄一下自己食品股大成的最新績效 身為雞肉雙雄的其中一雄 除了飼料、雞肉、雞蛋以外,還跨足了沙拉油、豬肉、海鮮、餐廳等事業體 幾乎可說是一檔食品ETF(還不用付管理費),進去它的官網就可以看到許多不同的事業體
Thumbnail
你現在也許單一個句子可以說得溜,但持續說話覺得尷尬的原因在於:缺乏連接詞。好的連接詞會讓口語表達更精確有力,讓韓國人聽到你說的話不需要猜測意思或重新思考,表達能力也就跟著上升!
Thumbnail
喜歡音樂的羅小咩,不定期將在周六中午12:00與你聊聊戲劇中的音樂,還有音樂中的戲劇。本次介紹:惡作劇之吻、慶餘年、Good Casting、溫柔時光、鋼之鍊金術師這五個戲劇作品的主題曲。
Thumbnail
喜歡音樂的羅小咩,不定期將在周六中午12:00與你聊聊戲劇中的音樂,還有音樂中的戲劇。本次介紹:必娶女人、kill me heal me、錦衣之下、101次求婚、灌籃高手這五個戲劇作品的主題曲。
近期許多地方受到洪水以及颱風的侵襲 但包你發的線路及網路穩定度完全不受到影響 大家可以放心,我們是24小時全年無休不間斷 就算你半夜三點要玩包你發也完全OK 不會像有些系統只在白天開放 而同樣的穩定度也是一大考驗 在這種供電不穩定的情況 也有可能導致其他遊戲斷線 但包你發機房穩定、有備用電源 完全不
Thumbnail
疫情長時間帶來了減少開放性的社交機會,最直接的影響莫過於情緒勒索造成的封閉性失調,感謝國立台灣戲曲學院傑出校友,為身心障礙的大寶寶們帶來一系列精彩的演出,透過精心策劃的舞蹈及雜耍表演,帶給住民體驗了跟以往不同的志工服務內容,見到了久違住民
Thumbnail
每一次TDCA的關愛陪伴,都讓受贈的服務對象感受到滿滿的幸福感,一起協力完成手作皮革鑰匙圈,每一針每一線都在訓練孩子們手眼協調的肢體,透過不同花色皮革來搭配,不僅訓練孩子對色彩的辨識能力,同時也在培養眼界裡的審美觀噢!