2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【.NET】配列をランダムに並び替えるメソッドは標準である【Shuffle】

Posted at

.NET 8から追加された、RandomのShuffleメソッドを使うことで、配列をランダムに並び替えることができます。

公式リファレンスは次のページです。

使い方はこんな感じです。

var array = Enumerable.Range(1, 10).ToArray();
Random.Shared.Shuffle(array);
Console.WriteLine(string.Join(",", array));

新たに並び替えた配列を作るのでなく、Shuffleメソッドの引数に渡した配列を並び替えることに注意してください。

  • このメソッドのオーダーはO(n)です
  • 内部で、Randomの Next(Int32, Int32)を使っています
  • 配列だけでなく、Span<T>を並び替えるオーバーロードもRandomに用意されています

また、.NET 10(本投稿執筆時点ではPreview 1)で、LINQにもShuffleメソッドが追加されそうです。(注:Shuffleメソッドは、Preview 1には入っていません。)

こちらのLINQ版のShuffleメソッドは、List<T>などIEnumerable<T>を実装するオブジェクトで利用可能です。また、呼び出し元のIEnumerable<T>はそのままで、新たに並び替えたIEnumerable<T>を返します。

2
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?