• 締切済み

最大値をもとめる

Math.randomで100個の乱数を発生させてから、その中の最大値求めたいのです。一応JAVAの初心とのことでMAX関数を使わずにプログラムを書きたいです。どなた教えてください。

みんなの回答

  • tom11
  • ベストアンサー率53% (134/251)
回答No.4

こんにちは、、 データが数値なら、乱数の入っている配列を ソートしては、いかがでしょう。 public class sortarrays { Random ran; double [] data = new double [100]; double [] data1 = new double [100]; /** Creates a new instance of sortarrays */ public sortarrays() { ran = new Random(); for(int i=0;i<data.length;++i){ data[i]=ran.nextDouble(); System.out.println(data[i]); } data1 = data.clone(); Arrays.sort(data1); for(int i=0;i<data.length;i++){ System.out.println(data[i]+" "+data1[i]); } System.out.println("最大値 " + data1[data1.length-1]); } /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here new sortarrays(); } }

  • tachiwa
  • ベストアンサー率34% (25/73)
回答No.3

10個発生させて上位3個を見てみました。 class SortAndShowMax01 { public static void main(String args[]){ double[] doubleArray = new double[10]; for(int i = 0; i < doubleArray.length; i++){ doubleArray[i] = Math.random(); } double tmp = 0.0; for(int m = 0; m < doubleArray.length; m++){ for(int j = m + 1; j < doubleArray.length; j++){ if(doubleArray[m] < doubleArray[j]){ tmp = doubleArray[m]; doubleArray[m] = doubleArray[j]; doubleArray[j] = tmp; } } } System.out.println("MaxOne:" + doubleArray[0]); System.out.println("MaxTwo:" + doubleArray[1]); System.out.println("MaxThree:" + doubleArray[2]); } }

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

class Max { private Max() { } public static <T extends Comparable> T maximumOfArrayElements(T[] a){ T max = a[0]; for(T x : a){ if(max.compareTo(x) < 0){ max = x ; } } return max; } } class Sample { public static double max(double[] array, int start, int end){ if(start+1==end){ return array[start] > array[end] ? array[start] : array[end]; } int mid = (start + end) / 2; double a = max(array, start, mid); double b = max(array, mid , end); return a > b ? a : b; } public static void main(String arg[]){ double [] data = new double[100]; Double [] Data = new Double[100]; for(int i=0;i<100;i++) Data[i]=data[i]=Math.random(); System.out.println("max:"+Max.maximumOfArrayElements(Data)); System.out.println("max:"+max(data, 0, 99)); } }

  • linus1974
  • ベストアンサー率19% (71/370)
回答No.1

乱数は置いておいて、100個の数値データから 最大値を求めたいわけですよね。 <ヒント> 配列にデータを入れてループをまわします。 現在の最大値と配列のある位置の値を 比較して配列の値のほうが大きければ 最大値を入れ替えればよいです。 これでわからないようならばソートに 関するサイトを調べたほうがいいと思います。

関連するQ&A