C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: 2次元Listの内容をランダムにソートしたい


(過去ログ 140 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■82013 / inTopicNo.1)  2次元Listの内容をランダムにソートしたい
  
□投稿者/ prata (1回)-(2016/11/30(Wed) 00:01:29)

分類:[.NET 全般] 

お世話になっております。
2次元Listのソートについて質問させて下さい。
C#において

public static List<List<string>> 2dlist = new List<List<string>>();
と記述して、作成したオブジェクトである2dlistには下記のような内容がはいっています。

[0,0]トマト [0,1]50円 [0,2]B [0,3]店舗D
[1,0]からあげ[1,1]100円 [1,2]B   [1,3]店舗B  
[2,0]みかん [2,1]80円 [2,2]C [2,3]店舗C
[3,0]バナナ [3,1]120円 [3,2]D [3,3]店舗C
[4,0]りんご [4,1]90円 [4,2]A [4,3]店舗B
[5,0]桃 [5,1]60円 [5,2]A [5,3]店舗A

このリストを行ごとにランダムにシャッフルして
改めて2次元LISTを作成したいのです。

例えば、上記のリストをシャッフルして、このように格納したいです
※行毎にランダムに格納されます

[0,0]りんご [0,1]90円 [0,2]A [0,3]店舗B
[1,0]みかん [1,1]80円 [1,2]C [1,3]店舗C
[2,0]バナナ [2,1]120円 [2,2]D [2,3]店舗C
[3,0]トマト [3,1]50円 [3,2]B [3,3]店舗D
[4,0]桃 [4,1]60円 [4,2]A [4,3]店舗A
[5,0]からあげ[5,1]100円 [5,2]B   [5,3]店舗B

2Dlistのランダムシャッフルについてご存知の方がいらっしゃいましたら、ご教授ください
よろしくお願いいたします

引用返信 編集キー/
■82014 / inTopicNo.2)  Re[1]: 2次元Listの内容をランダムにソートしたい
□投稿者/ Jitta (231回)-(2016/11/30(Wed) 09:06:06)
No82013 (prata さん) に返信
2次元配列と考えるから難しくなる。
List<A> (ただし A は List<string>)と考えると、どうでしょうか。
引用返信 編集キー/
■82015 / inTopicNo.3)  Re[1]: 2次元Listの内容をランダムにソートしたい
□投稿者/ 魔界の仮面弁士 (993回)-(2016/11/30(Wed) 09:23:05)
No82013 (prata さん) に返信
> public static List<List<string>> 2dlist = new List<List<string>>();
> と記述して、作成したオブジェクトである2dlistには下記のような内容がはいっています。

……本当は記述していませんよね?

C# や VB においては、変数名の先頭文字を
半角数字や全角数字にすることはできないはずです。

2dlist ではなく list2d なら OK ですけれども。


> 2次元Listのソートについて質問させて下さい。

提示例は、2次元では無い様な…?

そもそも、
> [4,3]店舗B
と書かれていますが、インデックスの指定は
 var s1 = list2d[4,3]; // s = "店舗B";
ではなく、
 var s2 = list2d[4][3]; // 行,列 順に格納している場合
 var s3 = list2d[3][4]; // x,y 順に格納している場合
という形でのアクセスになるはずですし。


> このリストを行ごとにランダムにシャッフルして
上記でいうところの s2 の意味ならば、
 var sortedList = list2d.OrderBy(_ => rnd.Next()).ToList();
とすれば OK です。
引用返信 編集キー/
■82016 / inTopicNo.4)  Re[2]: 2次元Listの内容をランダムにソートしたい
□投稿者/ 魔界の仮面弁士 (994回)-(2016/11/30(Wed) 09:38:26)
No82015 (魔界の仮面弁士) に追記
> 上記でいうところの s2 の意味ならば、
>  var sortedList = list2d.OrderBy(_ => rnd.Next()).ToList();
> とすれば OK です。

書き忘れ。

上記の前に、乱数生成機となる
 var rnd = new Random();
を書いておいて下さい。


また、先の例の s3 パターンのリストなら、
 var sortedList = list2d.Select(x => x.OrderBy(y => rnd.Next()).ToList()).ToList();
で処理できます。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -