计算机当中有很多问题都和数学相关,甚至可以说,现实中的大多数问题,只要不是NP问题,都可以用目前的"自动机"即计算机进行求解,现今的计算机都是图灵完备的(若要知道什么叫做图灵完备,请查询图灵机),所以大多数的问题还是能做到解的,但是有些问题你无法证明其有解,或者无法证明其无解,所以就有这么些问题比如NP问题,其含义是对某一个问题算法给定步数或者给定时间,但是在限定的时间或者步数之内无法求出解。这类问题都被称作NP问题,计算机学当中有大一部分都是NP问题,但是现在要讲的不是NP问题,而是数学,计算机和数学紧密相关,比如布尔运算,理论上只要存在非门,就能组合出其他所有的逻辑门,而电子元件中,有一个元件很有意思,工作原理和非门相似,即PN结。
扯了这么多,我们不需要去解决NP问题,也不需要知道PN结工作机制,现在,只是单纯地去了解下与我们息息相关地离散数学,我很早之前写了一个TypeScript的库,也是关于离散数学的,项目地址如下:
jingyuexing/MathLibgithub.com现在,使用Python来构建一个离散数学的Python库,让我们来看看如何编写
比如计算平均值,其公式如下
根据公式,我们知道,首先要求和,然后除以整个的数据个数,计算机当中碰到多个数据的可以用到数组,而数据的个数可以由数组的长度得到,由此思路,我们可以写如下代码
def Mean(*args):
'''
求平均值
'''
Total=0
for i in args:
for x in i:
Total=Total+x
return (Total/args.__len__())
又比如说求方差,其公式如下
上文当中的平均值在方差中也有用,根据公式,可以得到下面的代码
未完待续。。。。。。