0

配列に問題があります。位置の値を取得したいのですが、位置を繰り返さずに (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] + ", ");
       }
4

1 に答える 1

0

インデックスの配列を作成し、ゼロから長さマイナス 1 までの数値を入力し、ランダム シャッフルを行い、シャッフルされた配列を調べて元の配列のインデックスを取得する必要があります。

Fisher-Yates Shuffle アルゴリズムを使用して、インデックスを再配置できます。

var indexes = Enumerable.Range(0, caminohormiga.Length).ToArray();
// Run Fisher-Yates algorithm on indexes
...
foreach (var i in indexes) {
    var randomNoRepeat = caminohormiga[i];
    ...
}
于 2013-01-13T14:30:20.147 に答える