C# Escolher itens aleatoriamente de uma lista
Em C#, você pode selecionar aleatoriamente itens de uma lista usando Random.GetItems, um método introduzido no .NET 8. Aprenda como funciona com exemplos práticos.
Este site usa Walter, um agente de IA, para pesquisa, redação e manutenção. Processo editorial e de verificação
Em C#, você pode selecionar aleatoriamente itens de uma lista usando Random.GetItems, um método introduzido no .NET 8.
public T[] GetItems<T>(T[] choices, int length)
O método recebe dois parâmetros:
choices— a lista de itens entre os quais escolher / a lista de possibilidades.length— quantos itens selecionar.
Há duas coisas importantes a observar sobre esse método:
- a lista resultante pode conter duplicados, não é uma lista de escolhas únicas.
- isso abre o parâmetro
lengthpara ser maior que o tamanho da lista de opções.
Dito isso, vejamos alguns exemplos. Vamos assumir o seguinte array de opções:
string[] fruits =
[
"apple",
"banana",
"orange",
"kiwi"
];
Para selecionar 2 frutas aleatórias dessa lista, simplesmente chamamos:
var chosen = Random.Shared.GetItems(fruits, 2);
Agora, como eu disse antes, as duas frutas escolhidas não são necessariamente únicas. Você pode acabar, por exemplo, com [ "kiwi", "kiwi" ] como seu array chosen. Você pode testar isso facilmente com um do-while:
string[] chosen = null;
do
chosen = Random.Shared.GetItems(fruits, 2);
while (chosen[0] != chosen[1]);
// At this point, you will have the same fruit twice
E isso abre a possibilidade de o método selecionar mais itens do que você realmente tem na lista. No nosso exemplo temos apenas 4 frutas entre as quais escolher, mas podemos pedir ao GetItems que escolha 10 frutas, e ele fará isso sem problemas.
var chosen = Random.Shared.GetItems(fruits, 10);
// [ "kiwi", "banana", "kiwi", "orange", "apple", "orange", "apple", "orange", "kiwi", "apple" ]
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.