程晓华
2024-3-9
因为要解决一个比较复杂的供应链管理实际业务问题,我想到了一个数学问题:
从一个1~1,000的整数数组里面随机取n个数,第一次取到的n个数之和S1与第二次取到的n个数之和S2“相似”的概率有多大呢?根据问题实际需要,这个所谓的相似(Similarity, Sim)可以被定义为 0.9<Sim=S1/S2<1.1。
我们先举例来说明这个的问题:
当n=1的时候,分两次从1~1,000有放回地各随机取1个数,它们相似的概率有多大?
当n=2的时候,分两次从1~1,000有放回地各随机取2个数,分别将其相加得S1、S2,S1、S2相似的概率有多大?
当n=3的时候,分两次从1~1,000有放回地各随机取3个数,分别将其相加得S1、S2,S1、S2相似的概率有多大?
……
概率与数理统计上的大数定律说的意思是说,在随机事件的“大次数(如n>30)”地重复出现过程中往往会呈现出几乎必然的规律,这个规律就是大数定律。
针对我们的例子,是不是随着n的增大,S1、S2相似的概率会越来越大呢?这是不是也是大数定律的一种体现形式呢?
按照我个人对大数定律的认识,我的猜想是,随着n的增大,S1、S2相似的概率会越来越大。但局限于我的数学水平,我无法用公式推导来证明我的猜想。下面是我用R语言做的随机过程模拟,图1 则是模拟的结果,这个结果支持了我的猜想:
R语言随机过程:
#2024-3-8 LLN_sample_2_from_1000
library(tidyverse)
options(digits=3)
r<-1:1000 #设定一个1~1000的自然整数数组
sample_n<-1:200 # 设定每次抽样个数 n 从1~200
test<-100 # 每次抽样次数为 100 次
s<-vector() # 抽样结果容器
for (k in sample_n){ #进行循环抽样模拟
for (j in 1:test){
for (i in 1:2){
s<-c(s,sum(sample(r,replace=TRUE,k))) #有放回地取数
}
}
}
ratio<-0
for (i in 1:(length(s)-1)){
ratio<-c(ratio,s[i]/s[i+1])
}
sn<-rep(sample_n,each=2*test)
df<-data.frame(s,ratio,sn)
df<-df%>%mutate(sim=ifelse((ratio<1.1 & ratio>0.9),1,0))#定义相似度
sl<-df%>%group_by(sn)%>%summarise(sum=sum(sim))#按抽样个数汇总相似结果
plot(sl$sn,sl$sum,type='l',lwd=2,xlab='抽样个数',ylab='相似的个数')
图1 模拟结果
这个结果是经过反复试验的。
我现在的问题是:谁能够免费帮我用数学公式推导证明这个结果是正确的?
有肯帮忙并能够完整地证明我这个结论的人将得到一本我亲笔签名的《制造业库存控制技巧》经典版,赠送数量最多5本。
作者程晓华(John Cheng),“全面库存管理(TIM)”咨询独立顾问、“制造业库存控制技术与策略”课程创始人、讲师,《制造业库存控制技巧》(第1、2、3、4版+经典版)《决战库存-制造业供应链管理小说(大陆及台湾版)》《制造业全面库存管理》《全面库存管理数学分析》著作者。
全面库存管理(TIM)文章订阅号:ITOOTD
Mail: johnchengbj@126.com