2015-12-02 33 views
-3

我的代碼多維字符串數組是生成隨機 我做到這一步 多維,但我想通過一個班次RotateLeft在Java

這是我的陣列做rotateLeft爲隨機排列

String [][] Sec ={ 
         {"S1","--","S5","S2","S4"}, 
         {"S3","S4","S5","S3","S7"}, 
         {"S1","--","S7","--","--"}, 
         {"S2","--","S5","S6","S3"}, 
         {"--","s1","S2","S6","S4"} 
         }; 

這個隨機函數

for (int i=0 ; i<Sec.length; i++) 
{ 
    for (int j=0 ; j<Sec[i].length; j++) 
    { 
     int i1 = (int) (Math.random()* Sec.length); 
     int j1 = (int) (Math.random()* Sec[i].length); 

     String temp = Sec[i][j]; 
     Sec[i][j] = Sec[i1][j1]; 
     Sec[i1][j1] =temp; 

    } //end for 1 
    }//end for2 

和隨機排列

這個打印
for (int i=0 ; i<Sec.length; i++) 
{ 

     System.out.print("p"+ r1++ +"  "); 

    for (int j=0 ; j <Sec.length; j++) 
    { 
     System.out.print(Sec[j][i] + " "); 

    } 

現在我想幫我使rotateLeft這個隨機排列,並再次打印兩個時間

輸出是:

p1  S5 S6 S3 S1 S5  

p2  -- -- S6 S5 --  

p3  S4 S4 S7 S2 S4  

p4  S2 -- -- -- S3  

p5  S3 S7 s1 S2 S1 

,我希望把出隨機像這樣(使一個移動以改變ELEMNT的順序)

p1  S1  S5 S6 S3 S1   

p2  S5  -- -- S6 S5   

p3  --  S4 S4 S7 S2  

p4  S4  S2 -- -- --  

p5  S3  S3 S7 s1 S2 
+0

當你應用一個隨機函數時,你怎麼能期望任何特定的輸出?隨機的定義意味着你無法預測結果。 ---如何以任何方式隨意交換數值「旋轉」?如果有的話,它被稱爲* shuffle *。 – Andreas

+0

什麼是'r1'?它在哪裏定義? – Andreas

+0

@Andreas。我只是假設r1 ==我。 – yyttr3

回答

0

如果你正在旋轉像那樣,那麼在平面陣列而不是矩陣上運行會更有意義。如果你這樣做,那麼你可以採取數組的最後一個元素LastE並將其附加到數組的前面,刪除最後一個元素。

// PSEUDOCODE 
flat_array = matrix.flatten 
LastE  = flat_array[len(flat_array)-1] 
TailE  = flat_array.subset(0,len(flat_array)-2) 

rotated = TailE.prepend(LastE) 

後你會得到你的旋轉陣列,你可以把這個回矩陣或只是在陣列上進行操作,就好像它是一個矩陣。

+0

@回答了plz你能解釋我在哪裏使用這個代碼:( –

+0

@Njood不,因爲我對代碼不夠了解。無論如何,如果你知道你的材料,你應該能夠實現這個概念。谷歌並學習如何做到這一點。 – yyttr3