【发布时间】:2019-02-07 03:51:00
【问题描述】:
我有一个二维字符串数组。
我只想随机化行顺序并打乱每行中的项目。
例如:
[1,2
3,4]
我希望它如下所示,行对在这里保持不变(订单更改有效):
[4,3
1,2] or
[3,4
2,1] or
[4,3
2,1] or
[1,2
3,4] or
[2,1
3,4] or
[2,1
4,3] or
[3,4
1,2]
并且我想避免下面的洗牌,因为我会逐行读取我的数组,我想保持我的行包含相同的元素。我想保留我的行对。下面,我的 [1,2] 和 [3,4] 行不再存在:
[1,3
2,4] or
[3,1
4,2] or
[3,1
2,4] or
[1,4
2,3] ....
这是我的数组:
array_to_shuffle = new string[len_2d,2];
Shuffle(array_to_shuffle);
以及我需要帮助的功能:
public void Shuffle(Random rand, string[,] array)
{
rand = new Random();
int[] randomised_array = new int[len_2d];
for (int i = 0; i < len_2d; i++)
{
randomised_array[i] = i;
}
int[] MyRandomArray = randomised_array.OrderBy(x => rand.Next()).ToArray();
string tmp1 = String.Empty;
string tmp2 = String.Empty;
array[MyRandomArray[0], 0] = tmp1;
array[MyRandomArray[0], 1] = tmp2;
array[MyRandomArray[0], 0] = array[MyRandomArray[1],0];
array[MyRandomArray[0], 1] = array[MyRandomArray[1],1];
array[MyRandomArray[1], 0] = tmp2;
array[MyRandomArray[1], 1] = tmp1;
}
谢谢大家...
【问题讨论】:
-
为什么允许[4,3,2,1]?这也是对角线替换。
-
你有道理,我没有解释好。我只想保留具有相同元素的行。他们的顺序可能会改变。
-
所以比起定义,我的例子在描述我的任务方面更好。
-
那么,您想随机化行顺序并打乱每行中的项目吗?
-
没错!先生解释得很好。