可能性のある複製:
リスト内のランダムなアイテムにアクセス
数字の配列があり、この配列からランダムな要素を取得したい。例:{0,1,4,6,8,2}。 6を選択してこの番号を別の配列に配置すると、新しい配列の値は{6、....}になります。
Random.next(0、array.length)を使用しますが、これは長さの乱数を与えるため、ランダムな配列番号が必要です。
for (int i = 0; i < caminohormiga.Length; i++ )
{
if (caminohormiga[i] == 0)
{
continue;
}
for (int j = 0; j < caminohormiga.Length; j++)
{
if (caminohormiga[j] == caminohormiga[i] && i != j)
{
caminohormiga[j] = 0;
}
}
}
for (int i = 0; i < caminohormiga.Length; i++)
{
int start2 = random.Next(0, caminohormiga.Length);
Console.Write(start2);
}
return caminohormiga;
Random.next(0、array.length)を使用しますが、これは長さの乱数を与え、ランダムな配列番号が必要です。
array
から値を取得するには、random.next(0, array.length)
からの戻り値をインデックスとして使用します
Random random = new Random();
int start2 = random.Next(0, caminohormiga.Length);
Console.Write(caminohormiga[start2]);
シャッフルする
int[] numbers = new [] {0, 1, 4, 6, 8, 2};
int[] shuffled = numbers.OrderBy(n => Guid.NewGuid()).ToArray();
こうやって
int start2 = caminohormiga[ran.Next(0, caminohormiga.Length)];
の代わりに
int start2 = random.Next(0, caminohormiga.Length);
配列への参照として乱数を使用するだけです。
var arr1 = new[]{1,2,3,4,5,6}
var rndMember = arr1[random.Next(arr1.Length)];
私はあなたが繰り返したくないコメントで気づいたので、あなたはカードのデッキのように数字を「シャッフル」したいです。
ソースアイテムにList<>
を使用し、それらをランダムにおよびPushにStack<>
に取得して、数字のデッキを作成します。
次に例を示します。
private static Stack<T> CreateShuffledDeck<T>(IEnumerable<T> values)
{
var Rand = new Random();
var list = new List<T>(values);
var stack = new Stack<T>();
while(list.Count > 0)
{
// Get the next item at random.
var index = Rand.Next(0, list.Count);
var item = list[index];
// Remove the item from the list and Push it to the top of the deck.
list.RemoveAt(index);
stack.Push(item);
}
return stack;
}
それで:
var numbers = new int[] {0, 1, 4, 6, 8, 2};
var deck = CreateShuffledDeck(numbers);
while(deck.Count > 0)
{
var number = deck.Pop();
Console.WriteLine(number.ToString());
}
Console.Write(caminohormiga[start2]);