泊松分酒问题算法
‘壹’ 关于泊松过程的问题
首先你要明白参数为λ的泊松过程的相邻时间时间间隔是独立同分布于期望为1/λ的指数分布的这个证明很多书上都有主要是用泊松分布的平移不变性然后根据指数分布的遗忘性 P{S>s1+s2|S>S1}=P{S>s2},带入指数分布的分布函数即可
‘贰’ 泊松是干嘛的
法国数学家泊松少年时被一道数学题深深地吸引住了,从此便迷上了数学。这道题是:某人有8公升酒,想把一半赠给别人,但没有4公升的容器,只有一个3公升和一个5公升的容器。利用这两个容器,怎样才能用最少的次数把8公升酒分成相等的两份?
想:利用两次小容器盛酒比大容器多1公升 ,和本身盛3公升的关系,可以凑出4公升的酒。
解:(1)将8 公升酒倒入小容器,倒满后,把小容器的酒全部倒入盛5公升的容器中。
(2)再倒满小容器,将小容器的酒再向5公升容器倒,使它装满酒,此时小容器内只剩1公升酒。
(3)将5公升容器中的酒全部倒回盛8公升的酒瓶中,接着把小容器中的1公升酒倒入这时的空容器中。
(4)再把酒瓶中的酒倒满小容器,酒瓶中剩下的酒整好是8公升的一半。
‘叁’ 泊松问题
我的方法:(8升)倒(3升),(3升)倒(5升),
(8升)又倒(3升),(3升)再倒(5升),
倒不完,还剩1升,把(5升)倒回(8升)。
此时(8升)只有7升的量,把(3升)中的1升倒(5升)
最后往(5升)里倒3升
写完我后悔了,给不动脑子的人作了嫁衣
‘肆’ 餐厅分酒的容器
12斤到8斤,8斤到5斤余3斤,5斤到12斤空,3斤到5斤剩2斤空间 12斤到8斤,8斤到5斤去2斤剩6斤
‘伍’ 泊松趣味数学题
问题分析与算法设计
将12品脱酒 8品脱和5品脱的空瓶平分,可以抽象为解不定方程:
8x-5y=6
其意义是:从12品脱的瓶中向8品脱的瓶中倒x次,并且将5品脱瓶中的酒向12品脱的瓶中倒y次,最后在12品脱的瓶中剩余6品脱的酒。
用a,b,c代表12品脱、8品脱和5品脱的瓶子,求出不定方程的整数解,按照不定方程的意义则倒法为:
a -> b -> c ->a
x y
倒酒的规则如下:
1) 按a -> b -> c ->a的顺序;
2) b倒空后才能从a中取
3) c装满后才能向a中倒
按以上规则可以编写出程序如下:
*程序说明与注释
#include<stdio.h>
void getti(int a,int y,int z);
int i; /*最后需要分出的重量*/
int main()
{
int a,y,z;
printf("input Full a,Empty b,c,Get i:"); /*a 满瓶的容量 y:第一个空瓶的容量 z:第二个空瓶的容量*/
scanf("%d%d%d%d",&a,&y,&z,&i);
getti(a,y,z); /*按a -> y -> z -> a的操作步骤*/
getti(a,z,y); /*按a -> z -> y -> a的步骤*/
}
void getti(int a,int y,int z) /*a:满瓶的容量 y:第一个空瓶的容量 z:第二个空瓶的容量*/
{
int b=0,c=0; /* b:第一瓶实际的重量 c:第二瓶实际的重量*/
printf(" a%d b%d c%d\n %4d%4d%4d\n",a,y,z,a,b,c);
while(a!=i||b!=i&&c!=i) /*当满瓶!=i或另两瓶都!=i*/
{
if(!b)
{ a-=y; b=y;} /*如果第一瓶为空,则将满瓶倒入第一瓶中*/
else if(c==z)
{ a+=z; c=0;} /*如果第二瓶满,则将第二瓶倒入满瓶中*/
else if(b>z-c) /*如果第一瓶的重量>第二瓶的剩余空间*/
{ b-=(z-c);c=z;} /*则将装满第二瓶,第一瓶中保留剩余部分*/
else{ c+=b; b=0;} /*否则,将第一瓶全部倒入第二瓶中*/
printf(" %4d %4d %4d\n",a,b,c);
‘陆’ 泊松定理的问题
1. 设X为包装中的次品数, 满足二项分布. P(X=k) = C(100,k)p^k (1-p)^(100-k), 其中p=0.001
P(退款)= 1 - P(X=0) - P(X=1) = 1 - (1-p)^100 - 100p(1-p)^99 = 0.0046=0.46%
有于100为大数, 故也可以用二项分布的泊松近似:
P(X=k) 约等于 exp(-100p) * (100p)^k / k!
P(X=0)=exp(-0.1)=0.9048
P(X=1)=exp(-0.1)*(0.1)=0.0905
P(退款)约等于 1-0.9048-0.0905 约等于 0.47%
2. 泊松分布为 P(月销售量=k) = exp(-5) * 5^k / k!
设库存为K, 则要求P(月销售量<=K) >=0.999
即 exp(-5) * (5^0/0! + 5^1/1! + ... + 5^K/K!) >=0.999
计算得到当K=12时左边等于0.997981, 不足, K=13时等于0.999302, 有余
因此进货时库存量>=13即可.
‘柒’ 概率论 泊松定理基础问题,累加公式
已知:设故障台数x,配备n人
求:发生故障但是不能及时维修的概率==
发生故障时,没有维修工人;
当第n+1
个故障发生时,没有工人可以维修;
也就是
故障台数x减
工人数n
>=0;的概率,
p{x>=n}<0.01
泊松分布是离散累加的,p{x>=n}=1-p{x
0.99
(为了计算查表方便,因为,p{x=i}是已知的)
p(x<=8)=0.996197
,
p(x<=7)=0.988095
(excel
算的)
‘捌’ 泊松分酒问题3,6,10,12升的瓶子怎么把12升酒三等分
3斤瓶是空的用便捷的方法分出5斤酒是吧,3斤瓶剩2斤,10斤瓶剩1斤。分次三次用3斤装入7斤瓶。然后7斤瓶倒回10斤瓶,7斤瓶就是5斤了。3斤瓶倒入7斤瓶,7斤瓶剩2斤,这样,10斤瓶有8斤,再装满个3斤瓶倒入7斤瓶。这样
‘玖’ C语言出错泊松分酒
错的有些离谱了。。。我不知道是不是编译器问题。。。
#include<stdio.h>
inti,n;
intprobo(inta,intbv,intcv){
intn=0,b=0,c=0;
while(!(a==i||b==i||c==i)){
if(!b)
if(a<bv){n=-1;break;}
else{a-=bv,b=bv;}
elseif(c==cv){a+=cv;c=0;}
elseif(b+cv==i){a-=cv-c;c=cv;}
elseif(b>cv-c){b-=(cv-c);c=cv;}
else{c+=b;b=0;}
n++;
}
return(n);
}
voidpractice(inta,intbv,intcv){
intb=0,c=0,x=0;
printf("平分酒的分法: ");
printf("酒瓶%d空杯%d空杯%d ",a,bv,cv);
printf("%6d%6d%6d ",a,b,c);
while(!(a==i||b==i||c==i)){
if(!b){a-=bv;b=bv;}
elseif(c==cv){a+=cv;c=0;}
elseif(b+cv==i){a-=cv-c;c=cv;}
elseif(b>cv-c){b-=(cv-c);c=cv;}
else{c+=b;b=0;}
x++;
printf("%3d:%6d%6d%6d ",x,a,b,c);
}
printf("平分酒共分倒%d次. ",n);
}
intmain()
{
inta,bv,cv,m1,m2;
printf(" 请输入酒总量(偶数):");scanf("%d",&a);
printf("两空杯容量bv,cv分别为:");
scanf("%d,%d",&bv,&cv);
i=a/2;
if(bv+cv<i)
{printf("空标容量太小,无法平分! ");return0;}
m1=probo(a,bv,cv);m2=probo(a,cv,bv);
if(m1<0&&m2<0)
printf("无法平分!");
if(m1>0&&(m2<0||m1<m2))
{n=m1;practice(a,bv,cv);}
if(m2>0&&(m1<0||m2<m1))
{n=m2;practice(a,cv,bv);}
}
你发的代码太乱了,一点条理性也没有。首先,主函数必须定义为int型,在部分编译器中不定义或void型也不会报错,但int型不管怎么编译都不会错。
其次,调用的函数必须在调用之前申明。
还有就是小写字母不要打成大写字母。
最后,注意缩进,不然看起来太乱。