LDU组队学习task01-通过二项分布简单了解python的简易性

总所周知,Python 是一种上手简单、功能丰富的编程语言,是数据科学领域首选的可靠工具。通过 Python 你可以迅速解决问题,而不是把精力消耗在复杂的语法与编程细节上,而怎么体现简单性呢?接下来本文将通过概率论与数理统计中一个简单问题来讨论。

问题是这样的:按规定,某种电子元件使用寿命超过 1000 小时为一级品。已知某一大批产品的一级品率为 0.2,现在从中随机地抽查 20 只。 计算 20 只元件中恰好有 k 只 (k=0,1,...,20) 为一级品的概率为?

根据二项分布公式,所求的概率为:

                   LDU组队学习task01-通过二项分布简单了解python的简易性_第1张图片

 首先,我们尝试用python来解决这个问题:

LDU组队学习task01-通过二项分布简单了解python的简易性_第2张图片

LDU组队学习task01-通过二项分布简单了解python的简易性_第3张图片

 其中,解释一下,函数factorial用来计算阶乘,函数px用来计算幂函数的值,其中,运用到while循环语句。

while 循环语句根据某一条件重复执行某个语句块,它的基本结构如下:

while ***:
    statemnt

若 *** 的结果为 True 则继续重复执行 statement,若结果为 False 则停止循环。

 同样的,我们用c来写呢,按照公式的逻辑,这里阶乘我用的是while循环写的,也可以用递归来写,写的如下:

LDU组队学习task01-通过二项分布简单了解python的简易性_第4张图片

 程序也没有报错

但是结果呢??

LDU组队学习task01-通过二项分布简单了解python的简易性_第5张图片

 为什么会出现以上结果呢?

于是乎,我们带着问题开始了debug,这里第一个问题在于我们的阶乘函数,我一开始用的int 范围为-2^31 ~ 2^31-1,由于阶乘函数的值非常大,所以说这里50的阶乘用int数据类型 c语言就表示不出来,8的阶乘还可以,见下图一,后来用的是double的范围:-2^1024 ~ +2^1024,就解决问题了。同样的问题,也出现了在幂函数的身上,同样还是小数点后好几十位,在这里我还发现一个有意思的现象是小数的几次方,c给出的答案总带着几个莫名的小数(知道的大佬可以给解释一下啊)。第二个问题,就是我们阶乘还幂函数的运算,由于类型关系,整数和小数的类型,c并不能很好的给我们处理,也是我在数据类型及转换方面不太懂(嗯,需要恶补),尤其是一开始用的都是整型int,后来意识到问题,改成了double,但是在阶乘和幂函数的运算还是不对,这里后续去咨询下同学和老师,会在接下来给出答案。但是在python,我们却不用顾虑这么多,它功能强大、兼容性高、易上手,只要逻辑和格式正确能高效快速给出答案(初学者的了解,如有不对,请批评指正)。学习内容部分来源于聪明方法学python!!

Debug如下,手动感谢张鑫哥哥陪我一起debug!!!

 LDU组队学习task01-通过二项分布简单了解python的简易性_第6张图片LDU组队学习task01-通过二项分布简单了解python的简易性_第7张图片

 LDU组队学习task01-通过二项分布简单了解python的简易性_第8张图片

你可能感兴趣的:(学习,python)