Delphi 洗牌多维动态数组

Delphi 洗牌多维动态数组,delphi,pascal,Delphi,Pascal,如果我有一个2d动态数组(8x8),其中有5个2个和10个1个,其余的0个。我将如何洗牌它,以便所有的数字将随机放置在网格上?(数组中已经填充了这些数字)不要使用多维数组。使用长度为8*8=64的一维数组。将值放入该数组中。然后洗牌。最后,将这些值逐个提取到多维数组中。在如下所示的伪代码中: N := 8; SetLength(arr, N*N); idx := 0; for i := 1 to 5 do begin arr[idx] := 2; inc(idx); end; // et

如果我有一个2d动态数组(8x8),其中有5个2个和10个1个,其余的0个。我将如何洗牌它,以便所有的数字将随机放置在网格上?(数组中已经填充了这些数字)

不要使用多维数组。使用长度为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;

我告诉过你,你应该使用一维数组。将其洗牌,然后将每个项目放入多维数组。可能的重复项不会洗牌列表。它只显示沿y轴和x轴向下的2和1。你没有洗牌。你为什么不洗牌呢。我们已经告诉过你怎么做了。不要让我们一次又一次地做,不。这是将无序值从1D数组拉到2D网格的部分。不要盲目地复制代码。想想看。再次阅读上面的代码。仔细观察洗牌的部分。您以前忽略的部分。看看是否可以在伪代码中看到任何看起来可能会混乱的内容。请试着思考。让我们为你做一切对你没有帮助。你不想学吗?我在那里做了所有的事。填充数组。不要告诉我这是ShuffleArray(arr)部分,因为它甚至不是一个标识符。我一定是严重失明或其他什么的……人们来这里寻求帮助,得到适当的帮助,但不是每一点或每一个字节都为他们准备好了,然后又采取了这种权利的语气,这总是让我感到惊讶。嘘@班坎:我猜你在学校是为了学点东西。你本来有机会,但是错过了,取而代之的是纳基。很好的表演,真的,它真的会让人们在下一次帮助你的时候跃跃欲试。