2016-04-15 56 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在這裏做