Skip to content

排列組合與機率

排列組合

建立思考基準: 全相異 vs 全相異的1對1配對 很像資料庫的join

8! devide and conquer 可以用橫向樹狀圖去思考和想像,也可以評估如何切割問題才不會混淆自己,單一樹狀圖路徑用乘法(join),不同樹狀圖路徑用加法

/8! 很像資料庫的group

球數=人數 球數!=人數 球分給人, 球排成一列, 球不須排成一列(順序性) 一人一顆, 拿好拿滿 一人多顆, 拿好拿滿 等效

思考基準1: 全相異 vs 全相異的1對1配對

球數=人數 8顆球, 8個人, 分配下去每人一顆 abcdefgh, 12345678 8顆球, 8個人, 球有重複 abcdefff, 12345678

球數 != 人數 5顆球, 8個人, 分配下去, 每人最多一顆 abcde, 12345678 8顆球, 5個人, 分配下去, 每人最多一顆(會有3顆剩下) abcdefgh, 12345

8顆球, 取出5顆球排成一列 8顆球, 取出5顆球(不須排列) 8顆球, 取出3顆球(不須排列)

思考基準2

8顆球, 分3顆給A, 分3顆給B, 分兩顆給C 8位學生, 分成3組, A組3人, B組3人, C組2人 8件禮物, 分成3堆, 2堆3件, 1堆2件

機率

為什麼樹狀圖上的機率值可以相乘?

人們評估事件發生==可能性==之==大小==的幾種思維

古典的機率, 基本假設是“==相同的可能性==”。 先求出觀測的現象共有幾種可能, 再求出其中 有幾件是我們有興趣的。 將後者除以前者, 即為所要的機率。

過去的紀錄顯示, 伍茲如能帶著54洞領先進入決賽圈, 戰績是35勝1敗。 你要不要猜後來他贏了沒有? 運動比賽, 往往有過去資料可參考, 此時相同的可能性便不宜用了。 36次中成功35次, “ 相對頻 率”為35/36(約0.972)。 這種以相對頻率來解釋機率, 是常有的作法。 ==適用能重複觀測的現象==。會不會有爆出冷門的時候? 當然有。 只是對一特定事件, 用過去多次同樣情況下, 該事件發生 的相對頻率, 來估計下一次事件發生的機率, 乃是在沒有更多資訊下, 常被認為一屬於客觀的辦 法。

某君看上一女孩, 驚為天人, 覺得這是他今生的新娘。 評估後信心滿滿, 自認追上的機會有 8成。 旁人卻都不看好, 問他8成這一數字, 是如何冒出來的? 該君舉證歷歷, 一個又一個的跡 象, 顯示那女孩對他很有好感。 這個0.8的機率, 就是所謂 主觀機率。 ==有些現象就是不能重複觀測==。 如核能電廠的意外, 及彗星撞地球等。 以追女孩為例, 大約少有女孩, 會讓你做實驗, 反覆地追, 然後數一數其中成功幾次, 來定下她會被你追上的機率。 對這類無法重複觀測的現象, 在談機率時, 主觀機率就常派上 用場。

引進機率與統計, 乃為了協助我們做決策可以更精準。 而決策可以與時推移, 並非不能更改

以公理化的方式, 來引進機率? 先要有一個集合, 稱做 樣本空間, 當做某一觀測之所有可能結果的集合。 可以真的有這一觀測, 或只是虛擬的。 樣本空間的某些子集合, 是我們有興趣的, 這些就是一個個的 事件。 所有事件也構成一集合。 最後定出一 機率函數, 即對每一事件, 給一介於0, 1間的值, 為該事件之機率。 樣本空間、事件的集合, 及機率函數, 三者便構成 機率空間 (probability space)。

抽樣

labs

https://jupyter.org/try-jupyter/lab/

常態分布筆記

    # 常用參數介紹:
    # np.random.normal:
    # https://docs.scipy.org/doc//numpy-1.10.4/reference/generated/numpy.random.normal.html
    #     loc 期望值
    #     scale 標準差
    #     size 基於normal distribution生成的數量
    # plt.hist:
    # https://matplotlib.org/3.3.3/api/_as_gen/matplotlib.pyplot.hist.html
    #     Parameters:
    #         bins: 直方圖的柱數,可選項,默認為10;
    #         density: 是否將得到的直方圖各 bin 的數量規一化。默認為 False;
    #         color:顏色序列,默認為None;
    #         facecolor: 直方圖顏色;
    #         edgecolor: 直方圖邊框顏色;
    #         alpha: 透明度;
    #         histtype: 直方圖類型,『bar』, 『barstacked』, 『step』, 『stepfilled』
    #     Returns:
    #         n: 每個直方柱對應的數值,若 density=True,則為規一化後的數值
    #         bins: 每個分組的邊界數值
    #         patches
    # scipy.stats.norm.pdf 機率密度函數
    # https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.norm.html
    #     Parameters:
    #         x: 隨機變量數值
    #         loc: 期望值
    #         scale: 標準差
    #     Returns:
    #         y: 機率密度函數數值
    # :return: None
import numpy as np
import scipy.stats
import matplotlib.pyplot as plt
mu = 30
sigma = 1.5
size = 86400
np.random.seed(0)
dnormal = np.random.normal(mu, sigma, size)
_, bins_edge, _ = plt.hist(dnormal, bins=50, density=True, alpha=0.5)

# 機率密度函數曲線
y = scipy.stats.norm.pdf(bins_edge, mu, sigma)
plt.plot(bins_edge, y, label='$\mu$=%.1f, $\sigma^2$=%.1f'%(mu, sigma))

plt.xlabel('Expectation')
plt.ylabel('Probability')
plt.title('histogram of normal distribution:')
plt.legend(loc=0, ncol=1)
plt.show()

s = sum(dnormal)
print(s)
常態分布除了平均值(mu)和標準差(sigma),還有一些特徵: - 機率密度函數接近對稱 - 平均值與它的眾數(statistical mode)以及中位數(median)同一數值。 - 函數曲線下68.3 %的面積在平均數左右的1個標準差(sigma)範圍內。 - 函數曲線下95.4 %的面積在平均數左右的2個標準差(sigma)範圍內。 - 函數曲線下99.7 %的面積在平均數左右的3個標準差(sigma)範圍內。

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats
mu = 70
sigma = 5
size = 86400
np.random.seed(0)
dnormal = np.random.normal(mu, sigma, size)
_, bins_edge, _ = plt.hist(dnormal, bins=50, density=True, alpha=0.5)

# 機率密度函數曲線
y = scipy.stats.norm.pdf(bins_edge, mu, sigma)
plt.plot(bins_edge, y, label='$\mu$=%.1f, $\sigma^2$=%.1f'%(mu, sigma))
s = sum(dnormal)
print(s)

mu = 80
sigma = 1
size = 86400
np.random.seed(0)
dnormal = np.random.normal(mu, sigma, size)
_, bins_edge, _ = plt.hist(dnormal, bins=50, density=True, alpha=0.5)

# 機率密度函數曲線
y = scipy.stats.norm.pdf(bins_edge, mu, sigma)
plt.plot(bins_edge, y, label='$\mu$=%.1f, $\sigma^2$=%.1f'%(mu, sigma))
s = sum(dnormal)
print(s)

plt.xlabel('Expectation')
plt.ylabel('Probability')
plt.title('histogram of normal distribution:')
plt.legend(loc=0, ncol=1)
plt.show()

參考