2017-01-26 95 views
-2

如果我有一個2D動態陣列(8×8)用5 2的和10 1的和所有其餘0的。我將如何洗牌,所有的數字將被隨機放置在網格上? (該陣列已被填入這些數字)洗牌多維動態數組

+1

我告訴你在[您剛纔的問題(http://stackoverflow.com/q/41857117/33732),你應該使用一個一維數組。隨機播放它,然後將每個項目放入多維數組中。 –

+1

[如何生成一定數量的數字並將它們在網格中隨機分佈?](http://stackoverflow.com/questions/41857117/how-to-generate-a-certain-amount-of-numbers - 隨機分佈 - 隨機 - 跨-gr) – GuidoG

回答

2

請勿使用多維數組。使用長度爲8 * 8 = 64的一維數組。將該值放入該數組中。然後洗牌。最後,將這些值逐個關閉到多維數組中。在僞代碼看起來像這樣:

N := 8; 
SetLength(arr, N*N); 
idx := 0; 
for i := 1 to 5 do begin 
    arr[idx] := 2; 
    inc(idx); 
end; 
// etc., until array is populated 

ShuffleArray(arr); // you know how to do this from your previous question 

for idx := 0 to high(arr) do begin 
    Grid[idx div N, idx mod N] := arr[idx]; 
end; 
+0

這沒有洗牌清單。它只顯示2和1沿y軸和x軸向下。 https://gyazo.com/9086bb2813a799766817b5076b93dac2 –

+0

你沒有洗牌陣列。你爲什麼不洗牌呢?我們已經告訴過你該怎麼做。不要讓我們一遍又一遍地做。 –

+0

否。這是將一維陣列中的混洗值拉到二維網格的部分。不要盲目地複製代碼。認爲。再次閱讀上面的代碼。仔細看看洗牌的部分。以前忽略的部分。看看你是否可以在僞代碼中看到任何看起來可能混洗的東西。請嘗試思考。讓我們爲你做所有事都對你沒有幫助。你不想學習嗎? –