• ベストアンサー

randomで

4桁の数字をランダムで出したいのですが、たまに2桁になったり3桁になったりします。どうしたらいいでしょうか・・。 class Number{ public static void main(String [] args){ double a; for(int i=1;i<=10;i++){ a = Math.random()*10000; System.out.print((int)a); } } }

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

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

10000 をかけるのではなくて、9000 をかけて 1000 足す、のでは駄目?

saya129
質問者

お礼

ばっちりできました! ありがとうございます!

その他の回答 (1)

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.2

この乱数を何の目的につかうかによって違いますね。 (1)このママだと0~9999がでるのでしょうね。 (2)いいかげんでいいから4桁が欲しいなら、No.1の方の方法か、    答えの1111から9999の範囲をセレクトすればいいですね。 (3)データファイルのハッシングなどをやるなら、0~999も重要な結果です。 何をおやりになりたいか書いていただくとアドバイスしやすいですが。

saya129
質問者

お礼

とりあえずランダムで4桁の数字を出したかったんです。 どうもありがとうございました。

関連するQ&A

  • ランダム

    次のプログラムで同じ数字を出ないようにするにはどうすれば良いでしょうか。 import java.util.*; class RandomNum { public static void main(String args[]) { Random numRandom = new Random(); for (int i = 1; i <= 5; i++) { System.out.println(numRandom.nextInt(10)); } } }

    • ベストアンサー
    • Java
  • Writer & PrintWriter

    import java.io.*; public class JavaIO4 { public static void main(String args[]) throws Exception { Writer w=new FileWriter(args[0]); PrintWriter pw=new PrintWriter(w); for (int i=0; i<=330; i+=30) { double atai=Math.sin(Math.PI*i/180.0); String str="sin("+i+")="+atai+"\n"; pw.write(str); } pw.close(); } } と import java.io.*; public class JavaIO4 { public static void main(String args[]) throws Exception { //Writer w=new FileWriter(args[0]); PrintWriter pw=new PrintWriter(args[0]); for (int i=0; i<=330; i+=30) { double atai=Math.sin(Math.PI*i/180.0); String str="sin("+i+")="+atai+"\n"; pw.write(str); } pw.close(); } } の結果が同じになるんですけど、 Writer w = new FileWriter(args[0]); PrintWriter pw = new PrintWriter(w); とするのはなぜなんですか? 何か意味はあるんですか?

  • 質問です。

    コンパイルはできるのですが、実行するとExption in thread"main"java.lang ArrayIndex0ut0fBoundsExcept ion :0 at java1_1.main(java1_1.java:19と表示をされてしまってできません。教えてください。宜しくお願いします。 /* 実行時引数を受け取り乱数を設定 */ class java1-1 { public static void array_syokika(int a[]) { for(int i = 0; i < a.length; i++) { a[i] = (int)(100 * Math.random()); } } public static void main(String args[]) { int num = Integer.parseInt(args[0]); int a[] = new int[num]; array_syokika(a); for(int i = 0; i < a.length; i++) { System.out.println("a[" + i + "]=" + a[i]); } } }

    • ベストアンサー
    • Java
  • 正規乱数がうまく使えない

    正規乱数をつかってプログラムを組みたいのですが staticでないメソッドnextGaussian()をstatic コンテキストから参照することはできません というエラーが出てコンパイルできません。 public class sample{ public static void main(String[] args) { int n = 10; double z[] = new double[2*n]; for(int i = 0; i<n; i++){ z[2*i ] = Random.nextGaussian(); z[2*i+1] = Random.nextGaussian();} } } 申し訳ないのですがお手上げなので原因と解決法を教えて いただければと思います。よろしくお願いします。

  • 九九のプログラム

    public class kuku{ public static void main(String[] args){ int[][] hyou=new int[10][10]; System.out.print(" "); int i; int yoko; for(i=1;i<hyou.length;i++){ yoko=(int)(Math.random()*10); hyou[i][0]=yoko; System.out.print(" "+hyou[i][0]); } System.out.println(); int j; int tate; for(j=1;j<hyou[0].length;j++){ tate=(int)(Math.random()*10); masu[0][j]=tate; System.out.println(hyou[0][j]); }}} これを実行すると乱数がダブって表示されてしまうのですが、ダブらないようにし、appletで実行できるようにしたいのですがどのように直したらいいのでしょうか。どなたかアドバイスください。

  • 1と0の文字列作成

    1の後には0.9の確率で1、0.1の確率で0 0の後には0.9の確率で0、0.1の確率で1 という条件で、1と0の文字列作成しようと下のプログラムを作ってみました。 しかし実行してみるとなぜか1の後には0がきてしまうことが多く、条件のようになりません。 どこがおかしいのででしょうか? public class Sample{ public static void main(String[]args){ int a[]=new int[50]; Kansuu1 b = new Kansuu1(); Kansuu2 e = new Kansuu2(); a[0] = 0; for(int i=0; i<50; i++){ if(i==0){ System.out.print(0); }else{ int c = 0; if(a[i-1]==0){ c = b.kan1(a[i]); }else { c = e.kan2(a[i]); }System.out.print(c); } } } } class Kansuu1{ int kan1(int a){ if(Math.random()>0.9){ return 1; }else { return 0; } } } class Kansuu2{ int kan2(int a){ if(Math.random()>0.9){ return 0; }else { return 1; } } }

    • ベストアンサー
    • Java
  • 配列の乱数と平均値、個数表示

    0から9までの整数乱数を100個発生させ、100個の乱数の平均値も合わせて出力し、0から9それぞれの個数を数えるための変数に必ず配列を用いるプログラムを下記に作成したんですけども、出現個数カウント用の変数を10個用意していけないという条件で出現個数カウント用の配列を用意し、 結果が、 7 7 1 7 3 9 1 2 5 0 0 3 6 8 4 9 1 4 2 4 8 2 4 2 6 0 9 3 5 8 6 6 6 2 0 9 5 2 6 9 5 0 5 3 9 2 6 7 0 6 1 4 1 1 1 9 7 0 5 0 6 9 7 4 9 9 7 5 3 6 1 9 6 6 6 7 1 2 6 1 4 9 1 3 1 3 7 0 0 8 1 9 3 2 9 4 4 5 4 0 0 *********** 11 1 ************* 13 2 ********* 9 3 ******** 8 4 ********** 10 5 ******** 8 6 ************** 14 7 ********* 9 8 **** 4 9 ************** 14 平均 4.4 に表示されるプログラムがわかりません、Java初心者なので作ったプログラムのどこを直せばいいのか教えてください。 class Kadai06_5 { public static void main(String args[]) { int n=10; int a[] = new int[n]; int i; int sum=0; double avg=0; for(i=0; i<100; i++){ System.out.print((int)(Math.random()*10)); sum +=(int)(Math.random()*10); } for(i=0; i<n; i++){ System.out.println(); } avg=(double)sum/100; System.out.println("平均"+avg); } }

    • ベストアンサー
    • Java
  • forループの中での初期化

    class Foo{   public static void main(String args[]){     int x=10;     for(int i=0;i<5;i++){       System.out.print(x+i);     }     System.out.print("\n"+i);   } } このプログラムはコンパイルエラーが出ます。 iがforループの中で宣言されていてその外では無効だからです。 そこで class Foo{   public static void main(String args[]){     int x=10;     int i;     for(i=0;i<5;i++){       System.out.print(x+i);     }     System.out.print("\n i="+i);   } } のようにしてみました。 i=5と出ました。 ふと、iは確かに宣言されているけど、初期化はforの中でしかされていないのになぜコンパイルエラーにならなかったんだろう??、と思ってしまいました。 おかしくないでしょうか?

    • ベストアンサー
    • Java
  • Javaに関する初歩的な質問です。

    Javaを勉強中なのですが、 class Test{ public static void main(String args[]){ int a = 10; { int a = 10; } } } これがエラーになる理由がいまいちわかりません。 ぜひとも教えてください。

  • javaの問題

    import java.util.Scanner; class test6{ static void printArray(int[] a) { for(int i=0;i<a.length;i++) System.out.print(String.format("%1$6s", (a[i]+" "))); System.out.println(); } static void printArray(int[][] a) { for(int[] i:a) { for(int j:i) System.out.print(String.format("%1$6s",(j+"\t"))); System.out.println(); } } public static void main(String[] args) { int[] a = {12,536,-8,7}; int[][] c = {{32,-1,32,45,67}, {535,99999,2}, {2,5,-123,9}}; printArray(a); printArray(c); } } このプログラムを表示するとこのようになるのですが、 12 536 -8 7 32 -1 32 45 67 535 99999 2 2 5 -123 9 これに一工夫加えて見やすくしたいです。 このような形にするのはどのようにすればよいのでしょうか + + | 32 -1 45 67 | | 535 99999 2 | | 2 5 -123 9 | + +

専門家に質問してみよう