Start Debugging

C# Случайный выбор элементов из списка

В C# можно случайным образом выбирать элементы из списка с помощью Random.GetItems — метода, появившегося в .NET 8. Узнайте, как это работает, на практических примерах.

В C# можно случайным образом выбирать элементы из списка с помощью Random.GetItems — метода, появившегося в .NET 8.

public T[] GetItems<T>(T[] choices, int length)

Метод принимает два параметра:

Об этом методе важно знать две вещи:

С учётом сказанного давайте рассмотрим несколько примеров. Предположим, есть следующий массив вариантов:

string[] fruits =
[
    "apple",
    "banana",
    "orange",
    "kiwi"
];

Чтобы выбрать 2 случайных фрукта из этого списка, мы просто вызываем:

var chosen = Random.Shared.GetItems(fruits, 2);

Как я уже отметил ранее, два выбранных фрукта не обязательно уникальны. Например, в массиве chosen вы можете получить [ "kiwi", "kiwi" ]. Это легко проверить с помощью 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

И это позволяет методу выбирать больше элементов, чем у вас действительно есть в списке. В нашем примере доступно всего 4 фрукта, но мы можем попросить GetItems выбрать 10 фруктов, и он с готовностью это сделает.

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.

< Назад