質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

4回答

7161閲覧

Listの中身をランダムに並べ替え

orangetea

総合スコア14

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

2クリップ

投稿2018/04/16 04:10

listの中身をランダムに並び替えたいです。

List<string>list = new List<string>(){"0","1","2","3","4","5"};
で6つの要素の入ったリストを作りました。

この6つをランダムに並び変えたいです。

しかし、調べているとarrayに変えたり配列に変えたりする方法しか出てきません。

このlistにしたまま並び替える方法はありますか?
shuffleなど使えそうですが使い方がよく分かりませんでした。

プログラム初心者です。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

リストの並べ替えについては Zuishin さんの回答のとおりなのですが、using 句を使って何行か書き加えないと動きません。

コード全体としては以下のようになります。

C#

1// using の部分に注意。書き足す必要がある 2using System; 3using System.Collections.Generic; 4using System.Linq; 5using UnityEngine; 6 7public class ListRandomizer : MonoBehaviour 8{ 9 // インスペクターから設定する 10 [SerializeField] List<string> list; // 文字列型のリスト 11 12 private void Update () 13 { 14 // マウスの左クリック 15 if ( Input.GetMouseButtonDown ( 0 ) ) 16 { 17 // リストをランダムに並べ替える 18 list = list.OrderBy ( a => Guid.NewGuid () ).ToList (); 19 20 // コンソールに出力 21 foreach ( var item in list ) 22 { 23 print ( item ); 24 } 25 } 26 } 27} 28

投稿2018/04/27 17:42

編集2018/04/27 19:24
negitama

総合スコア943

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

シャッフルはよく使われる定型文があります。

C#

1list = list.OrderBy(a => Guid.NewGuid()).ToList();

投稿2018/04/16 04:28

編集2018/04/16 04:48
Zuishin

総合スコア28669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こちらに記載の方法が一番わかりやすいかと思います。

Randomクラスについてはググってみてください。

投稿2018/04/16 04:21

atmn3356

総合スコア157

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

C#

1Random r = new Random();//頭の方で宣言 2 3 4list = list.OrderBy(a => r.Next(list.Count)).ToList();

これなら見慣れたランダムを使っているので分かりやすいのではないでしょうか?
OrderByもしっくり理解できます。

投稿2019/01/23 04:25

編集2019/01/23 04:29
loppta

総合スコア35

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問