• 締切済み

最大値をもとめる

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

  • Java
  • 回答数4
  • ありがとう数2

みんなの回答

  • 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

  • 乱数について

    javaで使用可能な乱数にはMath.random()などがあります。その他にもあると思うのですが、なぜ一つの関数だけでないのですか?Math.random()にはなにか周期性や特徴みたいなものはあるのでしょうか?

    • ベストアンサー
    • Java
  • randomメゾットについて

    (int)(Math.random() * 10)で0~9の乱数が得られます。 この意味が全く理解できません。 乱数をキーワードに検索を続けていくと下記のような投稿を見つけました。 さいころの目を題にしたものがあると思うのですが、 その場合、Math.random() * 6 + 1 と回答されていると思います。 それは、 0~5までの乱数を作成し、作成された乱数に1を加算していて、 乱数:Math.random() * (max - min + 1) + min という計算式を元に考えられているのですよね? ますます意味が分かりません。 どなたか私のような者でも分かるように噛み砕いて説明して頂けないでしょうか? 疑似乱数が何かとか、乱数の種類には何があってとか説明されても分からないと思います。 まずは上記の内容について説明頂きたいです。くだらない質問ですみませんが宜しくお願い申し上げます。

    • ベストアンサー
    • Java
  • 乱数の桁数指定、または範囲指定。

    こんにちは。javaで乱数を発生させる場合に Math.randomというメソッドを使用しているのですが、 桁数指定とかって可能なのでしょうか? (例)2桁の数値のみをランダムに発生させる等 1桁、3桁は不可。 また、範囲の指定など可能なのでしょうか? (例) 25から70までの範囲でランダムに発生させる。 わかる方、教えていただけると幸いですm(_ _)m よろしくお願い致します。

    • ベストアンサー
    • Java
  • コンパイルできません。

    コマンドプロンプト上で、乱数をいくつか取得するというプログラムを作成したいのですが、コンパイル出来なくて困っています。発生させる乱数を0~900までの数字の中から0~9個のうちのいずれかの個数だけ取得するようにしたいです。j< の所に変数を記述するのはダメなのでしょうか?わかる方いましたらお願いします。 import java.util.*; public class RandomTest{ int rand; public static void main(String[] args){    Random generator = new Random();    for(int i=0; i<1; i++){     int rand = (int)(Math.random() * 10);    }    for(int j=0; j<rand; j++){     int ran = (int)(Math.random() * 1000);       System.out.println(ran);    } } }

    • ベストアンサー
    • Java
  • 乱数の最大値

    C言語で0~Nまでの乱数を発生させる場合、 srand((unsigned) time(NULL)); rand()%N; とやりますよね。 このやり方だと、発生する乱数はRAND_MAX以下しかできません。 RAND_MAX以上の値を発生させるにはどうすればいいのでしょうか?

  • JAVAでの占い

    全くの初心者です。「今日の運勢」というのがJAVAで作られているみたいですが、Math.random()メゾットを使って大吉、大凶の運勢を占うJAVAのプログラムソースを教えて下さい。

    • ベストアンサー
    • Java
  • ランダム数をピックアップする方法

    いつもお世話になります。 このサイトで1から20までの中から重ならないように 3つ選ぶ問題で、以下のような説明を見つけたのですが、 どうしても、この通りにするコードが組めません。 先週の金曜日から考えているのですがどうしてもできません。 どなたか教えてください。 元の回答はここにあります。NO.1の方です。 http://okwave.jp/qa2035910.html ▽▽▽▽▽▽▽▽▽引用▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽ Math.random()を使うと、0以上1未満の乱数が生成できます。 これを使って、 20*Math.random() とすると、0以上20未満になります。 20も含めたいので、これに1を足します。 20*Math.random() +1 これで出てきた数字を変数に入れておき、もう一回この関数を呼び出し、変数に入っている数が出てきたらもう一回呼び出します。 ユニークな乱数が3つ生成されたら、完了です。 コードは工夫してみてください。

  • くじびきソフト作りたい

    先回質問させていただき、乱数発生は教えてもらいわかりました。 <html><head><title>乱数発生器</title></head> <body> 1~150の乱数を発生させます。<br> <input type="button" value="発生させる。" onclick="alert( Math.floor( Math.random() * 149 ) + 1 )"> </body></html> もしRAND関数使った場合はどのようにすればよいのでしょうか? また一度出た数字は除外していくのにはどうしたらいいですか? 目的はビンゴゲームのようなくじに使いたいと思います。 参照URLのようなものがベストなのですが、99までしかなく できれば3桁ほしいです。 http://www.ne.jp/asahi/ja/asd/gijutu/kuji/ よろしくお願いします。

  • 乱数の発生の仕方教えてください

    javaで乱数の発生の方法がいまいちわかりません。 import java.util.*;で Randomクラスを使うというところまではわかるのですが、実際にソースでの乱数の発生の仕方がわからないので教えてもらえないでしょうか?

  • 配列変数に重複のないランダムな数字を入れて行くには?

    JavaScript初心者です。 配列にランダムな数字を入れたいのですが、 aRnd = new Array(); aRnd[0] = Math.floor(Math.random()*100); aRnd[1] = Math.floor(Math.random()*100); aRnd[2] = Math.floor(Math.random()*100); のようにやると各配列にはランダムな数字が入りますが、重複が発生する可能性があります。これを重複が発生しないようにしたいのですが、どのようにすればいいのでしょうか? なお、上記例では0~99までの数字を3つの配列にセットする方法となっていますが、配列数や数字の最大値は変更する可能性があるので、これも配慮したいと思います。 よろしくお願いいたします。