我有一个数组的问题,我想得到位置的值,但不重复位置(使用next.random值重复,但我需要一次得到位置),我发布我的代码给你看他们。我希望你能帮助我。
int d = 0;
for (int i = 0; i < caminohormiga.Length; i++)
{
int start2 = random.Next(0, caminohormiga.Length);
d = caminohormiga[start2];
MatrizAux[i] = d;
if (caminohormiga[i] == 0)
{
Console.Write("Repetido");
}
Console.Write(caminohormiga[i] + ", ");
}
答案 0 :(得分:0)
你需要创建一个索引数组,用数字0到长度减1填充它,进行随机混洗,然后通过混洗数组来选择原始数组的索引。
您可以使用Fisher-Yates Shuffle algorithm重新排列索引。
var indexes = Enumerable.Range(0, caminohormiga.Length).ToArray();
// Run Fisher-Yates algorithm on indexes
...
foreach (var i in indexes) {
var randomNoRepeat = caminohormiga[i];
...
}