混洗多维动态数组
Shuffling a multidimensional dynamic array
如果我有一个二维动态数组 (8x8),其中包含 5 个 2's 和 10 个 1's 以及所有其他 0。我将如何洗牌,以便所有数字都随机放置在网格上? (数组中已经填满了这些数字)
不要使用 multi-dimensional 数组。使用长度为 8*8 = 64 的 one-dimensional 数组。将您的值放入该数组中。然后洗牌。最后,将值一个一个地提取到多维数组中。在看起来像这样的伪代码中:
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;
如果我有一个二维动态数组 (8x8),其中包含 5 个 2's 和 10 个 1's 以及所有其他 0。我将如何洗牌,以便所有数字都随机放置在网格上? (数组中已经填满了这些数字)
不要使用 multi-dimensional 数组。使用长度为 8*8 = 64 的 one-dimensional 数组。将您的值放入该数组中。然后洗牌。最后,将值一个一个地提取到多维数组中。在看起来像这样的伪代码中:
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;