在Pi中寻找幸运数字
2020-12-29 20:42
1206 查看
【读完这篇文章可能需要3.2年】
圆周率pi人们都不陌生,那么这个无限不循环的数字中是否存在一些特殊的数字呢?比如你的QQ号、你女朋友的生日、你的手机号等等。这个问题没有太大的意义,也没有什么技术含量 ,但是却很有意思。
在MIT的网站是提供了一个小数点后10亿位的pi,文件大小大概1GB。(https://stuff.mit.edu/afs/sipb/contrib/pi/pi-billion.txt)
虽然这不是人类计算的最长的pi,但是已经足够我们在其中寻找一些有意思的数字了。
3.14159265358979323846264338327950288419716939 9375105820974944592307816406286208998628034825 3421170679821480865132823066470938446095505822 3172535940812848111745028410270193852110555964 462294895.........6421977675387131968218819563 5848934815504410194647387557034502943416861599 3243541997318143550603927346434543524276655356 7435702193963945819905483278746713986820931963 53628204612755715171395115275045519【第10亿位数字】 【一秒钟数10位数字,不吃不睡,数到这儿,大概是3.2年之后了】 #可左右滑动
+1s+1s+1s+1s+1s+1s+1s+1s+1s+1s+1s
比如某人的生日是19901116,那么如果要在10亿位pi中寻找该数字,可以通过R完成
pi_url = "https://stuff.mit.edu/afs/sipb/contrib/pi/pi-billion.txt" system(paste0("wget ", pi_url)) library(readr) my_pi <- read_file("pi-billion.txt") tt <- gregexpr(pattern ='19901116',my_pi) tt[[1]]-2 #去掉整数位和小数点 #可左右滑动
[1] 5480651 16906344 20378709 73339152 124427557 160097772 640051361 [8] 696422030 744245299 794948367 797159618 850405243 920032661 973577551 attr(,"match.length") [1] 8 8 8 8 8 8 8 8 8 8 8 8 8 8 attr(,"useBytes") [1] TRUE #可左右滑动
即在pi的第5480651位小数开始,第一次出现该生日,在整个10亿位小数中一共出现了14次!
上述过程也可以通过Python完成。
import re ff = open("pi-billion.txt","r") ff_content = ff.read() for i in re.finditer("19901116", ff_content): print(i.start()-1, i.group()) ff.close()
5480651 19901116 16906344 19901116 20378709 19901116 73339152 19901116 124427557 19901116 160097772 19901116 640051361 19901116 696422030 19901116 744245299 19901116 794948367 19901116 797159618 19901116 850405243 19901116 920032661 19901116 973577551 19901116
结果和R一样。
理论上,根据概率计算,在10亿位数字中出现一个8位数的理论频数应该为10,所以这儿出现14次应该是合理的。即每一个人的出生年月日都应该能够在pi的10亿位小数中找到10次。
另外,本人一个还测试了一下自己的一个9位数字的QQ号,理论上出现的频数应该是1个,结果还真出现了1个,位于pi的第207889022位小数。
+1s+1s+1s+1s+1s+1s+1s+1s
相关文章推荐
- Python助力2020高校应届生就业 获取2020校园招聘信息
- 第一次接触c语言
- Python助力2020考研调剂 各大高校调剂信息(持续更新)
- Linux中标准输出和标准错误的重导向
- Python助力2020高校应届生就业 获取2020校园招聘信息
- 雌性对雄性的选择是相关性状进化的驱动力
- Python助力2020考研调剂 各大高校调剂信息(持续更新)
- Python助力2020考研调剂 获取2020考研 高校调剂信息
- 进化重测序实验
- 7. JDK拍了拍你:字符串拼接一定记得用MessageFormat#format
- 项目实战:Qt中英文输入软键盘(支持Qt4、Qt5、触摸和键鼠混合输入等)
- LaTex零基础入门
- 7. JDK拍了拍你:字符串拼接一定记得用MessageFormat#format
- 5行Python代码调用电脑摄像头
- 爬取某婚恋网站数千小姐姐头像
- Python实现图片相似度计算
- 基于verilog实现数据检测-基于状态机的数据检测
- 支持 gRPC 长链接,深度解读 Nacos 2.0 架构设计及新模型
- PHP代码审计05之正则使用不当
- 【Azure 应用服务】在Azure Funciton中使用Powershell脚本函数,需要存储一些变量值如何解决?