--- title: 14.Python 亂數與統計模組 By 彭彭 tags: 學習, 紀錄 --- # 14.Python 亂數與統計模組 By 彭彭 {%youtube -xwCu6PN1jU %} ## 亂數、統計模組 ## 內建模組: 學習 ramdom模組 和statistics模組 1. ramdom模組 2. statistics模組 ## 亂數模組 * 載入模組 import random * 隨機選取 import random random.choice([0,1,5,8]) 從列表中隨機選取1個資料 random.sample([0,1,5,8],2) 從列表中隨機選取2個資料 * 隨機調換順序 import random data=[0,1,5,8] random.shuffle(data) print(data) * 隨機亂數 (出現機率相同) import random ramdom. random() 取得0.0~1.0之間的隨機亂數 random. uniform(0.0,1.0) (指定0.0~1.0之間的隨機亂數) * 常態分配亂數 import random 取得平均數100,標準差10的 常態分配亂數 random. normalvariate(100,10) (第一個參數指定平均數,第二個參數指定標準差) ![](https://i.imgur.com/3v7MQiR.png) 以此圖為例,常態分配會在90-110之間 只有少部分會在左右旁邊少數 ## 統計模組 * 載入模組 import statistics * 計算平均數 mean import statistics statistics.mean([1,4,6,9]) 計算列表中數字的平均數 * 計算中位數 median import statistics statistics. median([1,4,6,9]) * 計算標準差 stdev import statistics statistics.stdev([1,4,6,9]) 計算資料散佈的狀況 ## Practice ### 隨機模組 #### 隨機選取 * choice 列表中隨機選一個數字 import random data=random.choice([1,5,6,10,20]) print(data) >1 隨機印出列表中的一個數字 * sample 列表中隨機挑多個數字 import random data=random.sample([1,5,6,10,20],3) print(data) >[6,1,5] #### 隨機調換順序(就是洗牌的概念) * shuffle 列表中的數字就地調換後顯示 data=[1,5,8,20] random.shuffle(data) print(data) >[1,20,8,5] #### 隨機取得亂數 * random data=random.random() print(data) >0.55 random模組中的random()表示0.0-1.0之間的隨機亂數 * uniform(x, y) data=random.uniform(60,100) print(data) >62 兩數之間的隨機亂數 #### 取得 常態分配亂數 * normalvariate 常態分配 平均數100 標準差10 得到的資料多數在90-110之間 常態分配的效果 data=random.normalvariate(100,10) print(data) >98 * normalvariate 常態分配 平均數0 標準差5 得到的資料"多數"在-5~5之間 常態分配的效果 data=random.normalvariate(0,5) print(data) >1.0 ### 統計模組 * 平均數mean import statistics as stat 用別名 data=stat.mean([1,4,5,8]) print(data) >4.5 (1,4,5,8的平均數是4.5) * 中位數median import statistics as stat 用別名 data=stat.median([1,2,4,5,8,100]) print(data) > 4 中位數 會把極端數字排除 --- 同樣數字用平均數算 得出17 import statistics as stat 用別名 data=stat.mean([1,2,4,5,8,100]) print(data) > 17 --- * 標準差 Stdev import statistics as stat 用別名 data=stat.stdev([1,2,4,5,8,100]) print(data) >36.41820 代表資料散佈狀況 說明資料的差距是不是很大 這個例子因為有100導致之間差距大下面將100改成10以後 標準差變小 import statistics as stat 用別名 data=stat.stdev([1,2,4,5,8,10]) print(data) >3.25 ## End