10
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

C# リストのシャッフル

Last updated at Posted at 2021-10-10

##0.0 はじめに
リスト(List)内の要素をシャッフルする方法を調べてみました。

##1.0 スクリプトでシャッフル
下記のスクリプトでシャッフル可能です。

Shuffle.cs
// リストlistをシャッフルする (for降順ランダム取り)
for (int i = list.Count - 1; i > 0; i--){
    var j = Random.Range(0, i+1); // ランダムで要素番号を1つ選ぶ(ランダム要素)
    var temp = list[i]; // 一番最後の要素を仮確保(temp)にいれる
    list[i] = list[j]; // ランダム要素を一番最後にいれる
    list[j] = temp; // 仮確保を元ランダム要素に上書き
}

##2.0 定型文を利用したシャッフル方法
OrderByを使うためにusing System.Linq、Guidを使うためにusing Systemを追加します。

Shuffle.cs
// リストをランダムに並べ替える
list = list.OrderBy(a => Guid.NewGuid()).ToList();

配列の場合は下記でOKです。
array = array.OrderBy(a => Guid.NewGuid()).ToArray();

10
0
2

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
10
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?