python模拟概率(可视化讲解概率学基础)
概率论是一门源自生活的学科,但是,直到1654年,帕斯卡和费马才开始对概率论进行实质性的研究,也标志着概率论正式的成为了数学的一个分支。
人们最早熟悉和认识到概率是从身边的等可能事件开始的,比如:抛硬币,掷骰子等。正因为如此,赌徒对概率论的发展起到了不可磨灭的贡献。
时间回到1654年,梅内骑士(Chevalier de Méré)是一个资深赌徒。别看他名字里有骑士,但是他并非出身贵族。梅内骑士是一位作家,喜欢在自己的文字中称呼自己为梅内骑士(他曾在梅内学习)。久而久之,他的朋友们就称呼他为梅内骑士了。其中,也包括大数学家帕斯卡。准确的说,帕斯卡和梅内骑士是赌友。
帕斯卡
梅内骑士可能平时输钱比较多,所以痛定思痛,非常注重赌局问题的思考。他曾经向帕斯卡请教过一些问题,比较出名的是点数问题。
点数问题:
有两个人A和B对赌,每人各下注32个硬币,一共64个硬币。A和B商定,一局游戏谁赢了谁就记一分。先累计到三分的一方获胜,赢得所有的硬币。
梅内骑士的问题是,如果突然发生了一些情况,赌局被迫结束。这时候,A已经赢了两场,积两分;B只赢了一场,积一分。那么,64个硬币应该怎么分?
帕斯卡觉得这个问题很有意思。他和自己的朋友费马(号称“业余数学之王”,提出了费马大定理)进行了多次书信交流,并都给出了解答的思路。
02 等可能概型
概率论最先研究的就是等可能概型,如抛硬币和掷骰子。在可能概型中,所有结果出现的可能性都是相等的。比如说,抛硬币只会出现正面和反面(别起哄,说可能竖起来),掷骰子只会有1到6六个面。
所有可能结果的结合,概率论中叫样本空间。每一种结果就是一个基本事件。每个基本事件由于发生的可能性相等,则概率P = 1 / n。其中,n是所有基本事件的个数。
以抛硬币为例,假设这个硬币是均匀的。抛硬币出现正面或者反面的概率都是0.5。这个假设很重要,现实生活中,硬币或多或少都不规则,出现正反的概率都不会正好是0.5。
硬币正反面理论值
我们都知道,抛一次硬币不是出现正面,就是反面。但是,如果抛100次硬币,正面和反面出现的可能性会怎么样变化呢?下面我们利用python做一个动图。
#作者:逃学博士,转载请注明出处
head_prob = 0.5
trial_times = 100
head = 0
def get_plot(times):
ax.clear()
global head, head_prob
if random.random() <= head_prob:
head = 1
x = [1, 2]
head_exp_prob = np.round(head/times, 2)
prob_exp_dist = [head_exp_prob, 1-head_exp_prob]
ax.bar(x, prob_exp_dist, width=0.5, color='#00d0a1')
for i in range(len(x)):
ax.text(x=x[i]-0.04, y=prob_exp_dist[i] 0.04, s=np.round(prob_exp_dist[i], 4), size=10)
ax.set_title('试验概率')
ax.set_ylabel('概率')
ax.set_xticks(x)
ax.set_xticklabels(['正面', '反面'])
ax.set_ylim((0, 1.2))
anim = animation.FuncAnimation(fig, get_plot, frames=list(range(1, trial_times)))
anim.save('flip_coin.gif', writer='pillow')
100次抛硬币正反出现概率
当我们连续抛一百次硬币,正反面出现的概率就非常接近理论值了。同时,这个过程反过来也可以检验硬币是不是均匀,抛硬币是不是公平。
被动过手脚的硬币,正面出现概率为0.7
当你统计后发现,抛硬币正反概率如上图所示,你就可以自信的说这个硬币有问题。
不要以为这没啥用,如果有一点你发现赌场里的一个骰子出现6的概率特别高,而统计结果证明了你的猜想。那么,你就可以赢钱了。
03 数学期望其实,数学期望已经包含在帕斯卡和费马解决点数问题的思路里了。当时,费马收到帕斯卡的来信之后,针对点数问题给出了如下的解答:
费马的解答:
费马想A和B谁先累计到3分就算赢。现在,A积2分,B积1分。也就是说,赌局一定在接下来的两局之后结束。不管是A赢一局,还是B连赢两局。
这样说来,这两局比赛可能出现的结果是,第一局A赢,第二局也是A赢(虽然第一局A赢,A已经到3分了),记做AA,其他情况是AB,BA,BB,一共四种情况。
费马想,四种情况中,出现AA,AB和BA这三种情况,都是A赢,只有BB一种情况,B才能赢。那么,赌局中途结束的话,A应该拿64 * 3/4 = 48个硬币,B拿16个硬币。
帕斯卡的解答:
不同于费马,帕斯卡从另外一个角度给出了解答,也隐藏了一个重要的概念:数学期望。
帕斯卡想:接下来的第一局,如果A赢了,则A拿走全部64个硬币,B拿0个硬币。如果B赢了,则A和B各积两分,这时候比较中断,A和B应该平分硬币,各拿32个。也就是说,第一局游戏不管怎么样,A一定可以拿32个硬币。
第二局,A和B谁赢就可以拿走32个硬币。而A和B的胜率均为50%。那么,A和B应该平分这32个硬币。所以,A总共应该拿32 16 = 48个硬币,B拿16个硬币。
04 掷骰子的数学期望数学期望反映的是随机变量平均取值的数学特征,公式如下。文字表述就是所有可能出现的结果与出现的概率乘积的和。
拿掷骰子举例,总共可能出现的情况有6种,1到6个数。而每个面出现概率都是1/6。
掷骰子
根据公式,数学期望 = 1/6 * (1 2 3 4 5 6) = 3.5。 那么,当我们连续掷骰子两百次,得到的平均数是不是3.5呢?
200次掷骰子
我们可以看到,在开始的10几次掷骰子之后,骰子的平均数波动很大。但是随着掷骰子次数增加,骰子的平均值则趋近3.5了(图中红线)。
05 结束语概率论、数学以及其他任何学科,都是一代一代人的智慧。而我们在学习知识的时候,去了解知识点背后的历史,这样对于理解学科的精髓注意良多。
技术的发展以及可以让我们不用通过大量重复的试验,而通过编程去可视化知识点了。我们应该多多利用这些工具来帮助学习。
如果你没有把这个基本的,但有些不那么自然的基础数学概率方法变成你生活的一部分,那么在漫长的人生中,你们将会像一个踢屁股比赛中的独腿人。这等于将巨大的优势拱手送给了他人。
—— 查理.芒格
查理.芒格提到了100多种思维模型,而帕斯卡-费马系统也在其中。最基本的概率论知识同样蕴含着无穷的魅力。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com