Dupliquer possible:
Accéder à un élément aléatoire de la liste
J'ai un tableau avec des nombres et je veux obtenir des éléments aléatoires de ce tableau. Par exemple: {0,1,4,6,8,2}. Je veux sélectionner 6 et mettre ce nombre dans un autre tableau, et le nouveau tableau aura la valeur {6, ....}.
J'utilise random.next (0, array.length), mais cela donne un nombre aléatoire de la longueur et j'ai besoin des nombres de tableaux aléatoires.
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;
J'utilise random.next (0, array.length), mais cela donne un nombre aléatoire de la longueur et j'ai besoin des nombres de tableaux aléatoires.
Utilisez la valeur de retour de random.next(0, array.length)
comme index pour obtenir la valeur de array
Random random = new Random();
int start2 = random.Next(0, caminohormiga.Length);
Console.Write(caminohormiga[start2]);
Mélanger
int[] numbers = new [] {0, 1, 4, 6, 8, 2};
int[] shuffled = numbers.OrderBy(n => Guid.NewGuid()).ToArray();
Essayez comme ça
int start2 = caminohormiga[ran.Next(0, caminohormiga.Length)];
au lieu de
int start2 = random.Next(0, caminohormiga.Length);
Vous devez juste utiliser le nombre aléatoire comme référence au tableau:
var arr1 = new[]{1,2,3,4,5,6}
var rndMember = arr1[random.Next(arr1.Length)];
J'ai remarqué dans les commentaires que vous ne vouliez pas de répétition, vous voulez donc que les numéros soient "mélangés" comme un jeu de cartes.
Je voudrais utiliser un List<>
pour les éléments source, les récupérer au hasard et Les pousser vers un Stack<>
pour créer le jeu de nombres.
Voici un exemple:
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;
}
Donc alors:
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]);