ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

在Pi中寻找幸运数字

2020-12-29 20:51:22  阅读:1178  来源: 互联网

标签:10 1s pi 数字 19901116 亿位 ff 幸运 Pi


【读完这篇文章可能需要3.2年】

圆周率pi人们都不陌生,那么这个无限不循环的数字中是否存在一些特殊的数字呢?比如你的QQ号、你女朋友的生日、你的手机号等等。这个问题没有太大的意义,也没有什么技术含量 ,但是却很有意思。

在Pi中寻找幸运数字

在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

在Pi中寻找幸运数字

标签:10,1s,pi,数字,19901116,亿位,ff,幸运,Pi
来源: https://blog.51cto.com/15069450/2577379

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有