2016-04-15 4 views
1

Hier ist mein Code ..Endlosschleife? Hilfe debuggen diesen R-Code

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 
    } 
} 

Es hält es einfach verarbeitet und nicht zu stoppen. Ich kann nicht fortfahren. Ich denke, es läuft eine Endlosschleife, aber ich bin mir nicht sicher. Ohne die Weile funktioniert es gut und die Abbruchbedingung wird definitiv erreicht, aber dann funktioniert es nicht. Hilfe bitte. (BTW i 16 GB RAM haben, so ist es nicht, dass mein PC langsam oder alt ist ... Ich habe lange genug und es noch immer auf die Verarbeitung wartete daher denke ich, es ist eine Endlosschleife)

+0

Wie wäre es '' && statt '| | '? Welche Garantien überschreiten beide den Wert von 5? – Gopala

+0

Wo ist 't' definiert? – SymbolixAU

+0

Was machen 'T1' und' T2' hier? – SymbolixAU

Antwort

0

Diese kann laufen auf unbestimmte Zeit wenn entweder

  1. u ist immer <= 0.25 oder
  2. u ist immer > 0.25.

Bei , n2 ändert sich nie und so die while Zustand verlässt nie. Im Fall , n1 ändert sich nie und so die while Bedingung nie beendet.

Dies liegt daran, Sie testen, ob entweder n1odern2 sind weniger als 5. In jedem Fall einer von ihnen immer weniger als 5.

Sie wahrscheinlich while((n1 <= 5) & (n2 <= 5)) verwenden wan?


Sonstiges:

  • Sie nicht t definiert haben
  • Ich kann nicht sehen, was T1 oder T2 tun hier