Start Debugging

C# リストからランダムに項目を選ぶ

.NET 8 で導入された Random.GetItems を使うと、C# でリストからランダムに項目を選択できます。実用的な例とともに動作を解説します。

C# では、.NET 8 で導入された Random.GetItems を使ってリストからランダムに項目を選択できます。

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

このメソッドは 2 つのパラメーターを受け取ります。

このメソッドについて、重要な点が 2 つあります。

これを踏まえて、いくつか例を見てみましょう。次の選択肢の配列を仮定します。

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

そのリストから 2 つのフルーツをランダムに選択するには、単に次のように呼び出します。

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

先ほど述べたように、選ばれる 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.

< 戻る