- ベストアンサー
ヒストグラム
与えられたデータのヒストグラムを作るプログラムの作り方がわかりません。わかる人お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
GUIは苦手なのでCUI DOS画面上での表現での一例です。 public class HistGram { public static void main(String[] args){ int[] n=new int[6]; double[] d={0.5,1.0,1.1,2.0,2.1,3.0,3.1,3.1,4.0,4.1,4.2,4.3,4.4,5.0 }; for(int k=0;k<d.length;k++){ for(int i=0;i<6;i++){ if(Math.floor(d[k])==i){ n[i]=n[i]+1; } } } System.out.println("=====ヒストグラム====="); for(int j=0;j<6;j++){ System.out.print(j + "to" + (j+1) + "|"); for(int i=0;i<n[j];i++){ System.out.print("*"); } System.out.println(); } } } 不審な点があればご指摘願います。
その他の回答 (1)
- fortranxp
- ベストアンサー率26% (181/684)
>for(int k=0;k<d.length;k++){ データがd[]に配列にありますのでそのデータを呼ぶ。 >for(int i=0;i<6;i++){ 今回のデータは0~5の数字なので0から0.9 1から1.9 のように6段階に分けています。 もっと細かく分けたいときはreadLine()などで分け る数を入力されるようにすると良いです。 >if(Math.floor(d[k])==i){ 本当はif(d[k]>=0+i && d[k]<1+i){のようにしたかったのですがうまくいかなかったのでこうなった。 データが例えば100から120だったらやはりreadLine()から読みこんでiでは無くて異なる変数を使用した ほうが良い。 いずれにしましてもヒストグラム度数分布表の 特性をよく把握したほうが良いと思います。 今回の例は以前外注したBASICプログラムを基に しています。
お礼
ありがとうございます。 ヒストグラムの作り方がわかりました。 あと、宜しければ、 for(int k=0;k<d.length;k++){ for(int i=0;i<6;i++){ if(Math.floor(d[k])==i){ について説明してもらえたらありがたいです。