• ベストアンサー

変数を取得したい

例えば、次のようなプログラムで1個の乱数を取得します。その取得した乱数の一番下の桁の数字(0~9)だけに着目し、変数iなどに値を取得するといったことは出来ますでしょうか? import java.util.*; public class RandomTest { public static void main(String[] args) { Random generator = new Random(); for(int i=0; i<1; i++){ int ran = generator.nextInt(); System.out.println(ran); } } }

  • mos21
  • お礼率46% (128/273)
  • Java
  • 回答数6
  • ありがとう数2

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

  • ベストアンサー
  • azicyan
  • ベストアンサー率21% (368/1747)
回答No.3

えーーっと まずchar型にキャストして、 (char)ran.charAt(7) とすれば8番目の文字が取り出せるので、 それをさらにinteger型に変換すればよいかと。

その他の回答 (5)

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.6

さまざまな方からさまざまな回答が出ているのですが、どれもずばり的を射ているというような感じがしません。(他の回答者の方々には悪いですが、私の率直な感想です。) そもそも、質問の意図がいまいちはっきりしません。このプログラムは何をするためのものなのでしょう? 「変数iに値を取得する」ということですが、変数iはforループのループカウンタです。ループ本体の中からループカウンタの値を操作することは、一般に「掟破り」です。特別に複雑な処理を行ったりするのでなければ、「iは1ずつ増えてゆく」という原則を破るべきではありません。 なお、整数値の一番下の桁の値を取り出したい場合は、10で割った余りを調べるのが普通です。

mos21
質問者

補足

回答ありがとうございます。変数iはforループで使用していましたね!変数はなんでもいいです。すいません!!これは画像の縦のピクセル値を見たときにそのピクセル数だけラインをとります。240×180ピクセルなら180ラインのように。それで、そのラインを何枚か(これもランダム)とりたいのです。その取得することが出来た部分のラインを画質の輝度を低下した画像にしたいというプログラムを作りたいのです。それに、nextIntを用いてうまく出来ないかと思い質問しました(^^;

  • yuji
  • ベストアンサー率37% (64/169)
回答No.5

generator.nextInt(10) を利用すればいいでしょう。

  • azicyan
  • ベストアンサー率21% (368/1747)
回答No.4

ひとつ注意点があります。 Randomクラスを用いた場合(あなたの場合) -1.0~1.0 の乱数になり Mathクラスのrandom()メソッドを用いた場合は 0.0~1.0 となります。 つまりあなたのやり方ではマイナスも出てきます。 正の数だけにしたい場合 int ran = Math.abs(generator.nextInt() %10) MathクラスのABSは絶対値。 %10は10で割ったあまり、の意味です(つまり0~9) またはMathクラスのrandomメソッドを使うなら単純に、int ran = (int)(Math.random() * 10) で乱数が出ます。

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

No.1のymmasayanです。補足にお答えしす。 JAVAはちょっとかじっただけなのでいいかげんだと思います。 言いたかったのは、乱数群(0.000000~0.999999)から乱数を1つ引いて 10倍して整数部を(INTで)取れば乱数を1文字取り出したことになります。 あとのプログラミングはよろしくお願いします。

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

乱数の1番上の桁ではだめでしょうか。 ran=INT(Rand()*10) 一番下の桁でも一番上の桁でも乱数には代わりがないと思いますが。

mos21
質問者

補足

回答ありがとうございます。一番上の桁でもいいのですが、全体の記述はどのようになりますか? ran=INT(Rand()*10)の記述だけでは理解できなくて(^^;すいません。

関連するQ&A

  • コンパイルできません。

    コマンドプロンプト上で、乱数をいくつか取得するというプログラムを作成したいのですが、コンパイル出来なくて困っています。発生させる乱数を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
  • 乱数を発生させて、それを配列して小さい順に並べる

    乱数の発生のさせ方は、質問集で見て import java.util.Random; class ransuu { public static void main(String args[]) { Random rand = new Random(); for ( int i = 0; i <10; i++){ int x = rand.nextInt(9); System.out.println(x); } } } を用いて表示できたのですが、そのあとの配列がよく分かりませんのでぜひ教えてください。ちなみに私の持っているテキストには任意の数(22、80、57、60、50など)を並べ替えるというものはあるのですが、今回のような乱数+配列の例が載っていないのでよく分かりませんでした。

    • ベストアンサー
    • Java
  • ランダム

    次のプログラムで同じ数字を出ないようにするにはどうすれば良いでしょうか。 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
  • 配列を使用して

    試しに1から150までの中から数字を1つ10回取得しコマンドプロンプト上に表示するというプログラムを作成しました。しかし、コンパイルはできたのですが、変な文字が表示されてしまいます。このプログラムではだめでしょうか? import java.util.*; import java.lang.*; public class hairetu { public static void main(String[] args) { Random generator = new Random(); int hairetu[] = new int[10]; for(int i=0; i<10; i++){ int ran = (int)(Math.random() * 150); hairetu[0]=ran; hairetu[1]=ran; hairetu[2]=ran; hairetu[3]=ran; hairetu[4]=ran; hairetu[5]=ran; hairetu[6]=ran; hairetu[7]=ran; hairetu[8]=ran; hairetu[9]=ran; } System.out.println(hairetu); } }

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

    2から150の中から数字を30個取得する。というのを2回繰り返します。そして、その2回とも両方に現れた数字だけを表示させたいのですが、自分が作成したプログラムではうまくコンパイルできませんでした。シンボルを解釈処理できません。互換性のない型。というエラーが出てしまいます。ここが間違っているなどアドバイス等お願いしますm(_ _)m import java.util.*; public class RandomTest { public static void main(String[] args) { Random generator = new Random(); //2から150の中から値が30個表示される for(int i=0; i<30; i++){ int ran = (int)(Math.random() * 148)+2; } for(int j=0; j<30; j++){ int ran2 = (int)(Math.random() * 148)+2; } int ran3 = ran && ran2; System.out.println(ran3); } }

    • ベストアンサー
    • Java
  • プログラムについて

    1から453までのあいだでランダムに取得された225個の数字をいったんranに格納し、同様にran2,ran3,ran4にもランダムに取得された225個の数字を格納します。そこでran~ran4までで取得された数字の中から全部に共通して格納されている数字だけをran5に格納するようなプログラムは作成できないでしょうか? ranに格納するまでのプログラムは以下のように作成しました import java.util.*; public class RandomTest { public static void main(String[] args) { for(int i=0; i<225; i++){ int ran = (int)(Math.random() * 452)+1; System.out.println(ran); } } }

    • ベストアンサー
    • Java
  • 意味がわかりません

    1から10のうちで乱数を1から10個のうちいずれかの個数を表示する。というプログラムを作成したく、次のようなプログラムを作成したのですが、表示結果に0(何も表示されない)が出てしまい意味がわからなくて困っています。1以上としたのになぜ何も表示されない結果が出るのでしょうか? import java.util.*; public class RandomTest{ public static void main(String[] args){ int rand; Random generator = new Random(); //1以上10以下のintの値をrandに rand = (int)(Math.random()*10)+1; for(int j=1; j<rand; j++){ int ran = (int)(Math.random() * 10)+1; System.out.println(ran); } } } お願いします。

    • ベストアンサー
    • Java
  • JAVA初心者です。

    以下の文法でコンパイルエラーが出ます。 添削をお願いします。 import java.util.Random; public class Test{ public static void main(String[] args){ int n; for (n = 0; n < 200; n++){ int i; for (i = 0; i < 38; i++) { Random rnd = new Random(); int ran = rnd.nextInt(10); System.out.print(ran); System.out.print(" "); for (t = 0; t < 200; t++) } System.out.println(); } } }

    • ベストアンサー
    • Java
  • javaのRandomで『a~z』までの乱数を表示させたいですが・・・。

    『a~z』の英小文字をランダムで表示させ、さらにint型変数countを『0~9』までランダムに発生させて取得した数だけ『a~z』をランダムに表示させたいのですが、表示結果が(例)aaaaa・・・ となってしまいます。本当は、acyxd・・・とランダムに表示させたいのですがどうすれば、よいでしょうか? import java.util.*; import java.io.*; class CharCheck{  public char charRandom(){ int n; char c = ' '; Random ran = new Random(); while(true){  n = ran.nextInt(123); if(n >= 97 && n <= 122){  c = (char)n;    break; }  }  return c; } public class RandomTest extends CharCheck{  public static void main(String args[]){   char ch[] = new char[10]; int count = 0; CharCheck ChChk = new CharCheck(); Random ran = new Random();   komoji = ran.nextInt(9);//英小文字をいくつ表示するかランダムで決める? (1以上とする) if(count == 0){    count++; } for(int i=0; i<count; i++){ ch[i] = ChChk.charRandom();    System.out.println(ch[i]); } } }

    • ベストアンサー
    • Java
  • Randomクラスを使い同じ値をもつことがないように

    するには? サンプルコードをどう改良したらいいですか 例えば{1,3,5,5,3,2}の連続した5とならないようにするには? import java.util.*; class Sample6_9{ public static void main(String args[]){ Scanner std = new Scanner(System.in); Random rand = new Random(); System.out.print("要素数:"); int n = std.nextInt(); int[]a = new int[n]; for(int i=0;i<n;i++){ a[i] = 1+rand.nextInt(10); System.out.println("a["+i+"]="+a[i]); } } }

専門家に質問してみよう