List<int> lstNumbers = new List<int>();
ストリームリーダーによってインスタンス化される番号のリスト
private void GetMode()
{
lblMode.Text += //How do I determine the mode of the data
}
すみません、これは本当にばかげたことです...誰か助けてください
List<int> lstNumbers = new List<int>();
ストリームリーダーによってインスタンス化される番号のリスト
private void GetMode()
{
lblMode.Text += //How do I determine the mode of the data
}
すみません、これは本当にばかげたことです...誰か助けてください
http://www.remondo.net/calculate-mean-median-mode-averages-csharp/から
public static IEnumerable<double> Modes(this IEnumerable<double> list)
{
var modesList = list
.GroupBy(values => values)
.Select(valueCluster =>
new
{
Value = valueCluster.Key,
Occurrence = valueCluster.Count(),
})
.ToList();
int maxOccurrence = modesList
.Max(g => g.Occurrence);
return modesList
.Where(x => x.Occurrence == maxOccurrence && maxOccurrence > 1) // Thanks Rui!
.Select(x => x.Value);
}
}
学生の質問のように聞こえ、言語はC#であるため、LINQクエリは不可能であると予想されます(質問自体にそれを記載する必要があります)。LINQクエリの場合は、別の回答を見てください。私は自分でできる答えを提供しています(これは実際のプログラミングでは使用しないでください)。
class Program
{
static void Main(string[] args)
{
var listOfInt = new List<int> {7, 4, 2, 5, 7, 5, 4, 3, 4, 5, 6, 3, 7, 5, 7, 4, 2};
var histogram = BuildHistogram1(listOfInt);
var modeValue = FindMode(histogram);
Console.WriteLine(modeValue);
}
private static int FindMode(Dictionary<int, int> histogram)
{
int mode = 0;
int count = 0;
foreach (KeyValuePair<int, int> pair in histogram)
{
if( pair.Value>count)
{
count = pair.Value;
mode = pair.Key;
}
}
return mode;
}
private static Dictionary<int,int> BuildHistogram1(List<int> listOfInt)
{
var histogram = new Dictionary<int, int>();
foreach (var v in listOfInt)
{
if (histogram.ContainsKey(v))
histogram[v] = histogram[v] + 1;
else
histogram[v] = 1;
}
return histogram;
}
}
辞書を使用してヒストグラムを作成します。ただし、値の範囲が事前にわかっていて、それが十分に狭い場合は、プレーン配列を同じ目的で使用できます。