首页 > 技术文章 > 概率论

elewei 2020-01-11 11:39 原文

 

1. 为什么要学习概率?

统计和概率是不同但又紧密相关的数学领域。

在概率中,我们根据假定的模型或原因,对未来事件做出预测;

而在统计中,我们对过去发生的事件中的数据进行分析,从而推断出这些模型或原因是什么。一个是预测数据,另一个是根据数据进行预测。

 

举个例子

“概率论研究的是一个透明箱子,你知道这个箱子的构造(里面有几个红球、几个白球,也就是所谓的分布函数),然后计算下一个摸出来的球是红球的概率。

统计学面对的是一个黑匣子,你只看得到每次摸出来的是红球还是白球,然后需要猜测这个黑匣子的内部结构,例如红球和白球的比例是多少?(参数估计)能不能认为红球40%,白球60%?(假设检验)”

概率论中的许多定理与结论,如大数定理、中心极限定理等保证了统计推断的合理性。做统计推断一般都需要对那个黑箱子做各种各样的假设,这些假设都是概率模型,统计推断实际上就是在估计这些模型的参数。

 

 

条件概率

某事件B发生的条件下,求另一事件A的概率,记为P(A|B)。

 

乘法公式

 

或者 乘法公式

 

全概率公式

 

 

 

2. 使用NumPy 模拟抛掷硬币操作

使用 0 表示硬币的正面, 使用 1 表示硬币的背面

使用Numpy的random 函数模拟出一百万次数据,产生0和1

 

1. 两次均衡掷硬币得到两次正面,概率如下:

import numpy as np

tests = np.random.randint(2, size=(int(1e6), 2))

test_sums = tests.sum(axis=1)
p_1 = (test_sums == 0).mean()
print(p_1)

 

 

运行结果

(venv) ➜  src python coin.py
0.250394

 

 

2. 三次均衡掷硬币得到一次正面

import numpy as np

tests = np.random.randint(2, size=(int(1e6), 3))

test_sums = tests.sum(axis=1)
p_1 = (test_sums == 1).mean()
print(p_1)

 

 

运行结果:

(venv) ➜  src python coin.py
0.374563

 

 

 

3. P(H) = 0.6 时三次非均衡掷硬币得到一次正面

import numpy as np

tests = np.random.choice([0, 1], size=(int(1e6), 3), p=[0.6, 0.4])

test_sums = tests.sum(axis=1)
p_1 = (test_sums == 2).mean()
print(p_1)

 

 

运行结果

(venv) ➜  src python coin.py 
0.28813

 

 

 

4.  一次掷骰子得到偶数

 

import numpy as np

tests = np.random.choice(np.arange(1, 7), size=int(1e6))

p_1 = (tests % 2 == 0).mean()
print(p_1)

 

 

运行结果

(venv) ➜  src python coin.py
0.499495

 

 

5. 两次掷骰子得到相同值

import numpy as np

first = np.random.choice(np.arange(6), size=int(1e6))
second = np.random.choice(np.arange(6), size=int(1e6))

p_1 = (first == second).mean()
print(p_1)

 

 

运行结果

(venv) ➜  src python coin.py
0.166253

 

推荐阅读