インデックスを変更することによって、配列の要素をランダムに変更しようとしています。インデックスを変更して配列の値の順序を変更する
これまでの私のコードは次のとおりです。
public static string[] Shuffle(string[] wordArray)
{
int swapIndex = 0;
string temp;
Random random = new Random();
for (int i = 0; i < wordArray.Length; i++)
{
System.Console.WriteLine("random " + random.Next(0, wordArray.Length));
swapIndex = (int)(random.Next(0, wordArray.Length));
temp = wordArray[i];
wordArray[i] = wordArray[swapIndex];
wordArray[swapIndex] = temp;
}
return wordArray;
}
及び方法は、以下であることを呼び出す関数:
static string[] words1 = new string[] { "1", "2", "3" };
static string[] days = new string[] { "M", "T", "W", "Th", "F", "S", "Su" };
public static void playListCreation()
{
for (int j = 0; j < days.Length; j++)
{
var result = Shuffle(words1);
foreach (var i in result)
{
System.Console.WriteLine(i + " ");
}
System.Console.WriteLine("/n");
}
}
コードの問題は、毎回Imが同じになっていることです数字はswapIndex
です。私は常に取得する:すべての反復で
ランダム2
ランダム2
ランダム0
。そして私は何が間違っているのか分からない。
アイデア?前もって感謝します。
添加すると、今ソリューションは良いです。しかし完璧ではない。私はランダムな値を持つので、同じ結果を得ることができます。例えば
:
月曜日:
曲1
曲2
曲3
火曜日:
曲2
曲1
曲3
水曜日:
曲1
曲2
曲3
のように...この場合
そして
からリスト月曜日
と
水曜日
は同じです。私はそれを制御する必要がありますが、コードで見ることができるように、一日からリストを取得したら、印刷します。私はそれを配列やタプルに置くことを考え、そのタプルが存在するかどうかをチェックしましたが、あまりに複雑すぎると思います。この状況をどうやって解決できますか?ありがとう!!
Console.WriteLineを '内部一見、' random.Next(0、wordArray.Length) '表現で'と' swapIndex = '文は異なる結果を返します。 'swapIndex'自体を表示することを検討してください。 –