首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

正态分布-360开机耗时案例分析

大家电脑上估计很多都有安装360的产品,每次开机看到自己的开机时间是多少秒,击败了全国多少电脑,心里是不是很爽?但是全国有那么多电脑,都安装了360了吗?开机时间是实时传到360的数据库的吗?那要多大的空间啊,还有就是并不是每台电脑都联网吧,但是他开机依然可以显示这个数据。他背后的原理又是什么呢?我来试试啊

一:假设360所收集的用户数据是符合正态分布的,但是不知道他的均值,标准差,尝试一下看看如何得到这个均值和标准差

1:我找了办公室的几台电脑,安装360开机助手,因为配置不同,开机时间不同,A电脑开机23秒,击败全国98%的电脑。B电脑开机40秒,击败全国66%的电脑.

2:根据标准正态分布,计算出排名1-98%,1-66%百分位对应的值,以z表示.

用R画个标准的正态分布

curve(dnorm(x, 0, 1), from = -4, to = 4,col="red")

> z002_100

> z002_100

[1] -2.053749

> z034_100

> z034_100

[1] -0.4124631r

根据公式z=(开机时间-均值)/标准差 来解方程组得到360用户开机的均值和标准差.

r

+ matrix(c(z002_100,1,z034_100,1),nrow=2,ncol=2,byrow=TRUE),

+ matrix(c(23,40),nrow=2)

+ )

[,1]

[1,] 10.35773

[2,] 44.27218

均值为44.27218,标准差为10.35773

验证一下推算

> pnorm(23,mean = r[2,1],sd=r[1,1])

[1] 0.02

> pnorm(40,mean = r[2,1],sd=r[1,1])

[1] 0.34

说明计算的均值和标准差没有问题

二:得到了360的均值和标准差,我们就可以演算测试其它电脑开机时间全国排名了

1:用excel 产生一个均值为44.27218,标准差为10.35773的表,根据你电脑的性能,不嫌弃慢的话几亿条数据都可以.因为我是测试,就产生了20000条数据.

打开excel 2016,选择数据-->数据分析-->随机数发生器

这样就得到了一个数据样本,保持为startTime.csv的文件,下面来测试吧

> getwd() #得到当前的工作目录

[1] "C:/BD"

> startTime

> head(startTime) #查看数据的前几条检查一下

Time

1 42.80020

2 21.39008

3 49.81327

4 32.37425

5 53.21671

6 34.06406

#画出数据样本的直方图

> hist(startTime[,1],prob=TRUE,main = "电脑开机时间统计", ylab="频率",xlab="开机时间(秒)")

> lines(density(startTime[,1]),col="red") #画出正态分布曲线

现在写个函数,只要填入开机时间,就会告诉你排名了

> time

+ y

+ return(y)

+ }

下面是测试的开机时间和排名,可以多测试几个

[1] 0.98

[1] 0.66

[1] 0.8146584

> time(20)

[1] 0.9904452

> time(37)

[1] 0.7586922

参考文献

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181101G0MQPD00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券