概率论给予了我们现实生活直观感觉完全不一样的解释,现实生活中的本福特定律就是一个很好的例子:

就像我们对考第一名印象很深刻,但是之后的第二第三就不怎么去留意;奥运冠军也是一样,所有人都会记得冠军是谁,但是亚军和季军就很少有人想的起来.

这里用python求出阶乘的数值中末尾或者首位出现0-9这10个数字的频率统计,其实(频数/总数)也可近似就是概率:

# -*- coding:utf-8 -*-
# /usr/bin/pythonimport numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from time import time
from scipy.special import factorial
import mathmpl.rcParams['axes.unicode_minus'] = False
mpl.rcParams['font.sans-serif'] = 'SimHei'def top1(number, a):number /= awhile number >= 10:number /= 10a *= 10return number, adef top2(number, N2):while number >= N2:number /= 10n = numberwhile number >= 10:number /= 10return n, numberdef top3(number):number -= int(number)return int(10 ** number)def top4(number):number -= int(number)frequency[int(10 ** number) - 1] += 1if __name__ == '__main__':N = 100000x = range(1, N+1)frequency = np.zeros(9, dtype=np.int)f = 1print('开始计算...')t0 = time()'''# top1a = 1for t in x:f *= ti, a = top1(f, a)print(t, i, f, a)frequency[i-1] += 1t1 = time()print('1耗时:', t1 - t0)# print(frequency)# top2N2 = N ** 3for t in x:f *= tf, i = top2(f, N2)frequency[i-1] += 1t2 = time()print('2耗时:', t2 - t1)# print(frequency)# Top 3:实现1f = 0for t in x:f += math.log10(t)frequency[top3(f) - 1] += 1t3 = time()print('3_1耗时:', t3 - t2)# print(frequency)# Top 3:实现2y = np.cumsum(np.log10(x))for t in y:frequency[top3(t) - 1] += 1t4 = time()print('3_2耗时:', t4 - t3)# print(frequency)# Top 4:本质与Top3相同y = np.cumsum(np.log10(x))map(top4, y)'''# Top 3:实现2y = np.cumsum(np.log10(x))for t in y:frequency[top3(t) - 1] += 1t5 = time()print('耗时:', t5 - t0)print(frequency)t = np.arange(1, 10)plt.plot(t, frequency, 'r-', t, frequency, 'go', lw=2, markersize=8)for x,y in enumerate(frequency):plt.text(x+1.1, y, frequency[x], verticalalignment='top', fontsize=15)plt.title(u'%d!首位数字出现频率' % N, fontsize=18)plt.xlim(0.5, 9.5)plt.ylim(0, max(frequency)*1.03)plt.grid(b=True)plt.show()# 使用numpy# N = 170# x = np.arange(1, N+1)# f = np.zeros(9, dtype=np.int)# t1 = time()# y = factorial(x, exact=False)# z = map(top, y)# t2 = time()# print '耗时 = \t', t2 - t1# for t in z:#     f[t-1] += 1# print f

python暴力实现本福特定律的例子相关推荐

  1. python暴力破解压缩包密码(python暴力破解zip压缩包)

    python暴力破解压缩包密码 简介 简介: ZIP文件格式是一种数据压缩和文档储存的文件格式,原名Deflate,发明者为菲尔·卡茨(Phil Katz),他于1989年1月公布了该格式的资料.ZI ...

  2. [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:

    [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子: mydf001=sqlContext.read.format("jdbc").o ...

  3. spark to mysql date_[Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子:

    [Spark][Python]Spark 访问 mysql , 生成 dataframe 的例子: mydf001=sqlContext.read.format("jdbc").o ...

  4. python 暴力破解 excel加密文件

    python 暴力破解 excel加密文件 'wordlist.txt' 为待测试的密码列表 fdd ddd eeee 5e5e5 58d85d5e d2d4d5d 4d4d4d3 dfdf,d; l ...

  5. python二重积分_用python求一重积分和二重积分的例子

    首先是对一元函数求积分,使用Scipy下的integrate函数: from scipy import integrate def g(x): return (1-x**2)**0.5 #用integ ...

  6. Python 暴力破解zip文件密码(相对简单的密码)

               Python 暴力破解zip文件密码(相对简单的密码) 密码的使用范围很广,首先,我们要明确密码的作用,其次要明白密码的类型. 密码的作用是进行权限的限制,判断用户的合法性,(不 ...

  7. python基础教程:python实现PID算法及测试的例子

    今天小编就为大家分享一篇python实现PID算法及测试的例子,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 PID算法实现 import timeclass PID:def __i ...

  8. 常见数字规律:帕累托定律与本福特定律

    帕累托定律:又名二八定律,揭示了一类常见的投入-产出不平衡的现象,认为80%的产出实际上是由20%的最top的投入决定的. 这个定律适用范围非常广泛,比如少部分大客户,贡献了大部分的销售额,巨量的财富 ...

  9. python代码:闭包closure的一个例子

    python代码:闭包closure的一个例子 #!/usr/bin/python # -*- coding: UTF-8 -*- """ @author: @file: ...

最新文章

  1. 起搏器可以用计算机吗,关于起搏器患者能否做核磁共振的最全说法
  2. MapReduce基础开发之二数据去重和排序
  3. 最实用的logback讲解(2)—appender
  4. mdp文件-Chapter4-MD.mdp
  5. 致:WWF技术博客领跑者WXWINTER--兰竹梅菊.春夏秋冬
  6. Windows XP时代终结:假设你还在用它怎么办
  7. jstl 处理Date 时间
  8. sourcetree不好做到的一些git操作
  9. TortoiseGit 单文件版本对比_入门试炼_09
  10. 操作系统中的死锁_操作系统中的死锁介绍
  11. 病毒传播数学建模matlab分析,数学建模MATLAB之分析法(一)
  12. Atitit.Gui按钮与面板---项目规模的评估----文件数统计,结构,代码行数,每类型文件行数.
  13. 几种常见的JS混淆工具比较。
  14. Python3 Cobalt strike shellcode 免杀过 360 卫士和360杀毒
  15. python安装math库_Python-math库
  16. 求边长为一的正方体中,面对角线组成的正四面体体积.
  17. HTML(常用标签与超链接)的案例
  18. 九度OJ—题目1015:还是A+B
  19. 城市规划计算机辅助设计综合实践,城市规划计算机辅助设计综合实践:AutoCAD2015/ArcGIS/PS/SU...
  20. 荣耀magic3会用鸿蒙,荣耀magic3怎么样-荣耀magic3配置分析

热门文章

  1. 如何进行网页背景音乐的设置
  2. 《Network Warrior中文版(第2版)——思科网络工程师必备手册》一导读
  3. 到公司做华为认证网络工程师有发展前途吗?
  4. 计算机科学和建工程的区别,计算机科学与计算机工程的区别在哪里
  5. Java模拟电影院购票系统
  6. NFS介绍及服务器搭建
  7. javascript +
  8. idea导入web项目教程
  9. Easy Connect 无法连接服务器,请检查网络是否可用
  10. Sqoop进行导入数据到Hive时报错:ERRORtool.ImportTool:Importfailed:java.io.IOException:java.lang.ClassNotFoundExc