使用具有相同元素但索引不同的两个数组

时间:2017-08-09 13:33:19

标签: c# arrays algorithm math

想象一下,我们有两个字符串数组(命名为A和B),包含1000个单元格。 A包含1000个单词,但B为空。

现在我想将A的每个元素复制到B,但A和B中元素的索引之间不应该存在任何关系或序列,至少可以识别。

在结束时,数组A将被清零所以我必须使用数组B,但我想得到一个元素的实际索引(元素在数组A中的索引)。

你能提出任何方法来解决这个问题吗? (使用键或方程生成索引会很好)

1 个答案:

答案 0 :(得分:2)

您可以为源数组中的每个元素生成一个随机数,并按此排序:

var r = new Random();
var B = A.OrderBy(x => r.Next(0, A.Length + 1)).ToArray();

这可能会产生相同的数字,但是从你的问题开始,只要你的输入数组与输入数组A不同,就会产生很多不足。

如果您还需要A中元素的原始索引,请使用同时使用当前元素索引的overload for Select

var B = A.Select((x, i) => new { Index = i, Value = x })
    .OrderBy(x => r.Next(0, A.Length + 1)).ToArray();

现在,您的B - 是一个匿名类型的数组,其中包含Index - 和Value - 属性。