目次
ヒストグラムは統計学の基本であり、データの分布状況を把握するために使います。データの分布を集計するには「階数」(横軸)を定義します。この階数の要素は、ビン(もしくはカテゴリ、バケツ)と呼びます。ビンを算出する式は以下の式で表せます。

nはビン、mはデータの要素を示します。つまりk個のmの和がビンということです。
CPUでヒストグラムを実装するのは驚くほどシンプルです。下記のソースコードでは、ヒストグラムを集計している行はわずか1行です。
ヒストグラムの集計(CPU).
package com.book.jocl.histogram;
import java.util.Random;
public class HistogramCPU {
private static final int BIN_SIZE = 256;
private static final int LOCAL_SIZE = 128;
private static final int DATA_SIZE = BIN_SIZE * LOCAL_SIZE * 64;
private static final int[] data = new int[DATA_SIZE];
private static int[] histogram = new int[BIN_SIZE];
public static void main(String[] args) {
generateSample();
for(int i = 0; i < DATA_SIZE; ++i) {
histogram[data[i]]++; //(1)
}
for(int i = 0; i < BIN_SIZE; ++i) {
System.out.println(histogram[i]);
}
}
private static void generateSample() {
Random rnd = new Random();
for(int i = 0; i < DATA_SIZE; i++) {
data[i] = rnd.nextInt(256); //(2)
}
}
}
上記のプログラムの出力は以下のようになります。
出力.
8070 8436 8147 8249 8201 ... 8300 8128 8361
Copyright 2018-2019, by Masaki Komatsu