2016-04-15 58 views
1

这里是我的代码..无限循环?帮助调试该R代码

T1=matrix(nrow=1000,ncol=1) 
T2=matrix(nrow=1000,ncol=1) 

X1=matrix(nrow=6,ncol=1) 
X2=matrix(nrow=6,ncol=1) 

n1=1 
n2=2 
while((n1<=5)||(n2<=5)) 
{ 
    t=t+rexp(1,rate=4.3) 
    u=runif(1,0,1) 
    if(u<=0.25) 
    { 
    X1[n1]=t 
    n1=n1+1 
    } 
    if(u>0.25) 
    { 
    X2[n2]=t 
    n2=n2+1 
    } 
} 

它只是不断处理,并不会停止。我无法继续。我认为它运行的是无限循环,但我不确定。 没有它的工作正常,终止条件肯定会达到,但为什么它不工作。请帮助。 (顺便说一句,我有16GB的RAM,所以它不是我的电脑很慢或老了......我已经等了足够长的时间,它仍然保留在处理因此,我认为这是一个无限循环)

+0

怎么样''&&代替'| |'?什么保证都超过5的价值? – Gopala

+0

哪里定义了“t”? – SymbolixAU

+0

在这里做什么'T1'和'T2'? – SymbolixAU

回答

0

可能运行无限期如果要么

  1. u始终是<= 0.25,或
  2. u总是> 0.25

在壳体,n2从不改变并且因此while条件永远不会退出。如果,n1从不改变,所以while条件永不退出。

这是因为你正在测试如果任n1n2都小于5。在这两种情况下,其中一人总是小于5

你可能婉使用while((n1 <= 5) & (n2 <= 5))


其他评论:

  • 您还没有定义t
  • 我看不出有什么T1T2在这里做