1

私は統計用の小さなアプリを書いています。このアプリの機能は、Array100 個の要素を保持するランダムに生成された数値の頻度を決定することです。

これまでのところ、0〜100の数字で埋めた2次元を生成することができましたArray(これらは、他のランダムに生成された数字の最大値と最小値ですArray)。

インデックスに基づいて、この配列に頻度を入力することを考えました。

このような:

//Array for random numbers
int[] randomNumbers = new int[10] {2, 3, 4, 5, 5, 2, 8, 9, 3, 7};

//Two-dimensional array for holding frequency of each unique number
int[,] frequency = new int[2,101];

for (int i = 0; i <= 100; i++)
{
    frequency[0, i] = i;
}

周波数配列は正常に生成されます。しかし、私はここからどこへ行くべきかわかりません。配列に一意の各番号の頻度を追加するにはどうすればよいですか? 私はこれを試しました:

for (int i = 0; i < randomNumbers.Length; i++)
{
    frequency[1, i] = frequency[1, i] + 1;
} 

しかし、それは周波数配列を継続的に1で埋めるだけです。

4

6 に答える 6

2

私には、 aDictionary<int, int>があなたのニーズに最も適しているように見えます:

Dictionary<int, int> frequency = new Dictionary<int, int>();

foreach (int number in randomNumbers)
{
    if (frequency.ContainsKey(number))
        frequency[number]++;
    else
        frequency.Add(number, 1);
}

int numberOfGroups = frequency.Count;
于 2013-06-06T14:31:49.170 に答える
2

私はそのようにします、あなたは頻度表に数値の値としてインデックスを持ち、実際の値は頻度です(正確にはそうではありません):

for (int i = 0; i <= 100; i++)
{
    frequency[i] = randomNumbers.SelectMany( o=>o.ArrayProperty==i ).Count() ;
}
于 2013-06-06T14:28:48.487 に答える
2

これを行うことができるはずです:

int[] randomNumbers = new int[10] {2, 3, 4, 5, 5, 2, 8, 9, 3, 7};

Dictionary<int, int> dictionary = new Dictionary<int,int>();

foreach(int randomNumber in randomNumbers)
{
    if (!dictionary.ContainsKey(randomNumber))
        dictionary.Add(randomNumber, 1);
    else
        dictionary[randomNumber]++;
}

それらを並べ替えたい場合は、Linqを使用してください...

var sortedList = from pair in dictionary
    orderby pair.Key
    select pair;
于 2013-06-06T14:46:48.263 に答える