欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

本福特定律

程序员文章站 2022-04-14 20:38:41
...

一堆从实际生活得出的数据中,以1为数字首位出现的概率约为总数的三成,而并不是我们靠直觉得出的 1/9 ,这就是本福特定律。

比方说,我们从1开始计数,1,2,3,4,5 …一直这么数下去,当我们数累了不数了,比方说我们数到19就不数了,那么显然以1为数字首位的数出现的概率要远远大于其它数,如果我们数到29不数了,那么显然以1或者以2作为数字首位的概率要远远大于其它数。意思就是,数字次序越靠后的,以它为首位出现的概率就越低。

我们可以用python作图来验证该定律:

import matplotlib.pyplot as plt
 
def firstDigital(x):
    while x >= 10:
        x //= 10
    return x
 
if __name__ == "__main__":
    n = 1
    x = [1,2,3,4,5,6,7,8,9]
    frequency = [0] * 9  #记录第一位数字中1-9数字出现次数
    for i in range(1,100):
        n *= i
        m = firstDigital(n) - 1
        frequency[m] += 1
    plt.plot(x,frequency,"r-",linewidth=2)
    plt.plot(x,frequency, "go", markersize=8)
    for i in range(1,10):
        plt.text(i,frequency[i-1]+0.3,frequency[i-1],ha = 'center',va = 'bottom',fontsize=12)
    plt.grid(True)
    plt.show()
    

本福特定律
上图统计的是从1到100!中以1到9为首位出现的概率。

本福特定律
上图统计的是从1到1000!中以1到9为首位出现的概率。

本福特定律多被用来验证数据是否有造假,但需要注意的是,本福特定律只对生活实际得到的数据,或者是顺序变化的数据起作用,倘若这些数据稍微被其它的随机函数所干扰,那么本福特定律将不再适用。

相关标签: 概率论