乱数で1~10の数字を発生させて最大値と最小値を表示させたいのですが、以下のように書いてもうまくできません。
c#
Random rnd = new Random(); string num = " "; for(int i = 0; i < 11; i++) { int dise = rnd.Next(1, 11); num += dise + " "; } Console.WriteLine(num); Console.WriteLine(num.Max()); Console.WriteLine(num.Min());
結果が以下のようになってしまいます。
9が最大値なのもおかしいし最小値が表示されません。
{追記}
自分なりに調べて、最大値と最小値はたぶん以下のコードで出てくるようになりました。たぶんというのは、乱数で発生した10個の数字が表示できないから確認できないのです。以下の通り、listを使って書いてみたのですが、listの中身を表示させるために一回stringに変換してからconsole.writelineで表示させようとしたところ失敗してしまいました。
c#
var samplelist = new List<int>(); Random rnd = new Random(); for(int i = 0; i < 11; i++) { int a = rnd.Next(1, 11); samplelist.Add(a); } string n = samplelist.ToString(); Console.WriteLine(" " + n); Console.WriteLine(samplelist.Max()); Console.WriteLine(samplelist.Min());
出てくる結果
たぶん先の質問、回答の延長で考えているのかもしれませんが、
https://teratail.com/questions/327609
> string num = " ";
...
> int dise = rnd.Next(1, 11);
> num += dise + " ";
はstring(文字列)で扱っていて、それすなわち配列ではありません。

文字列に対してMax、Minを行っても、文字列の中で辞書順で一番最大の文字'9'と最小の文字' 'が出力されてるだけです。
samplelist.ToString では List の各要素は表示されません。
List を何かの文字で区切って表示したい場合には string.Join メソッドが使えます。
まだ回答がついていません
会員登録して回答してみよう