見出し画像

【擬似言語⑤課題3❶】最頻値 | 方式❶binで数える(基本情報技術者, 科目B, アルゴリズム)

このNoteでは「最頻値」を求める擬似言語を作ります。

3つ方式を考えついたので全3回になります。分かり易い回から学習しても大丈夫ですよ。ご自分でも「{1, 2, 4, 2}って4枚のカードが1枚ずつ手元に来た時に、一番枚数の多い数字をどう調べるか」手順を考えて見てくださいね。

1つめ。今回は、部屋を準備して入ってもらう感じ。データによっては空室も残ります。>【擬似言語⑤課題3❶】最頻値 | 方式❶binを準備して数えるNote*

2つめ。予め並べてから数える方式。>【擬似言語⑤課題3❷】最頻値 | 方式❷ソート後に数えるNote*

3つめ。都度部屋を追加しながら数える方式。私が手作業でやるならこの手順かなぁ。>【擬似言語⑤課題3❸】最頻値 | 方式❸リスト登録しながら数えるNote*

それでは始めましょう!


>全Noteへのリンク(FE節)
※科目Aのテーマ別/科目B/旧FE午後など沢山作りました!



最頻値とは一番”多い”値

「最頻値(モード, mode)」とは、最も多い頻度の値です(wikipedia)。

例えば、データ{10, 20, 20, 30}の時、10は1個, 20は2個, 30は1個なので、2個が一番多い。よって最頻値は20

以上から、最頻値を求めるには、❶値の登場回数を数えて、❷登場回数の「最大」を探す、手順だと分かります。

次節では、>【擬似言語⑤】最大値のNote をちょい改造して準備します。




下準備 | 最大値探索の関数を活用

最頻値は登場回数の最大値を探す手順があるので、>【擬似言語⑤】最大値のNote で作った最大値を返す「findMax関数」を改良します。下記が以前作った関数。

〇findMax(整数型の配列: data)
  整数型: maxVal
  整数型: i

  maxVal ← data[1]

  for (i を 1 から dataの要素数 まで 1 ずつ増やす) 
    if (data[i] > maxVal)
      maxVal ← data[i]  / チャンピオンの交代 */
    endif
  endfor

  maxVal を表示する

課題。返り値を「最大値が記憶された要素番号」に変更して下さい。>【擬似言語⑪課題】重複排除のNoteと同様です。

○整数型: findMaxIndex(整数型の配列: data)
  整数型: maxVal, maxIndex
  整数型: i

  maxVal ← data[1]
  maxIndex ← 1

  for (i を 2 から dataの要素数 まで 1 ずつ増やす)
    if (data[i] > maxVal)
      maxVal ← data[i] / チャンピオンの交代 */
      maxIndex ← i     / チャンピオンの要素番号 */
    endif
  endfor

  return maxIndex

maxIndexを設けて返り値にしただけですね。




方式1 | 階級(bin)を設ける

5段階評価のデータの時、評価1を配列frequency[1]で数え、評価2を[2]で、3を[3]、4を[4]、5を[5]で数える方式を考えます。

各部屋に案内して数えるイメージですね。

擬似言語を作って見てください。

  • 関数名:getModeBin

  • 引数:整数型の配列array

  • 返り値:整数型の変数modeIndex。最頻値をカウントしちあfrequencyの要素番号。例えば、array={1, 1, 1, 2}の時、frequency={3, 1}となるので、frequency[1]が最頻値の個数を記録しているので、modeIndex=1を返す。

  • 最大値探索には、前節の「findMaxIndex(整数型の配列: data)」を使ってください。

ヒント:配列の要素番号に配列を入れることになるはずです。

さらにヒント。手順。

  1. 配列frequencyを初期化する
    累積合計を計算するので重要。>【擬似言語③】合計のNote

  2. データに応じてfrequencyにカウントする

  3. frequencyでの最大値を特定する

  4. 評価の最頻値を表示する


答えは下記です。

ここから先は

1,108字

メンバーシップ ¥ 500 /月

■初月無料なので、お試しください。 ■私独自の理解法や詳しい分析を公開したいです。 ■根本を丁寧に見…

【初月無料】Iパス法律/SG/AP計算/DBとSC午後2

¥500 / 月
1ヶ月無料 人数制限あり

学習方法・問題特集のNoteは全て無料提供を続けます▼ もしご覧になったNoteが有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼ もちろんコメントでも結構です(・ω・▼)ノシ