質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

4回答

8324閲覧

java 乱数を複数発生させる方法

Yuukiy

総合スコア19

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1グッド

0クリップ

投稿2018/12/28 05:45

現在プログラム経験0からjavaの勉強をしています。
調べてみたのですがよく理解できなくて質問させていただきました。

乱数の表示について、複数の乱数を表示する場合

int a = (int)(Math.random()*5)+1;
int b = (int)(Math.random()*5)+1;
.
.
.
と一つずつ書く方法以外にあるのでしょうか?

よろしくお願いいたします。

bochan2👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/12/28 05:47

どのように表示させたいかにもよります。単に作るだけでもかなりの数やり方があります。 「目的にあった最適な方法」をお求めでしたら要件(とゴール)をもっと具体的にされた方が良いです。 今の状態でも如何様にも利用できるので。
azuapricot

2018/12/28 05:51

乱数でも、同じ乱数が出てもいいのか、同じ乱数が出てはいけないのかによって処理は変わると思うのでもう少し具体的にやりたいことを書いた方がよいとおもいます。
Yuukiy

2018/12/28 05:53

ありがとうございます! 二つ以上表示する方法が現在は一つずつ書く方法しかわからないので、 int x=1,y=2 のように本当に単純な方法が知りたいです。
m.ts10806

2018/12/28 05:56

質問は編集できるので適宜ご対応ください。 「単純な方法」というのも曖昧な表現です。「どのような目的で使いたいか」と言うところも含めて記載いただいた方が良いように思います。 要は、最も単純なのが今の書き方です。複雑に書こうと思えば幾らでも複雑に書けます(Hello World出力もprintだけが手段ではありません)
guest

回答4

0

IntStream(Java8以降)を使う方法

java

1int[] rnds1 = IntStream.generate(() -> (int)(Math.random() * 5) + 1) 2 .limit(10).toArray(); 3 4int[] rnds2 = new Random().ints(10, 1, 5).toArray();

投稿2018/12/28 07:21

編集2018/12/28 07:21
swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

例えば、配列にするとfor文でまとめて書くことができます。

java

1import java.util.*; 2 3public class Main { 4 public static void main(String[] args) { 5 6 Random rand = new Random(); 7 8 int []data = new int[5]; 9 10 for(int i = 0; i < data.length; i++){ 11 data[i] = (int)(Math.random()*5)+1; 12 } 13 14 for(int i = 0; i < data.length; i++){ 15 System.out.println(data[i]); 16 } 17 } 18}

投稿2018/12/28 05:59

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yuukiy

2018/12/28 06:18

ありがとうございます!
guest

0

Randomクラスを使うやりかた
↑Mathだけじゃないよという意味で。
こちらの方がキャストが不要なので若干短い(単純化には成功している)

結局のところ「どのように使うか」で適切な作り方は変化するので、
要件の具体化をお願いしますね。

投稿2018/12/28 06:07

編集2018/12/28 06:14
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yuukiy

2018/12/28 06:30

目的が1245679+123456698を何度も書くよりも 変数を使用してx+yで済むみたいな? わざわざ書かなくでもまとめて(簡単に)書けるようなものがあるのかなと思い質問しました。 まだ基礎の練習問題を解いている段階で問題も「乱数を二つ表示して、大きいほうを表示する」という ものなので、こうしたい!というものが曖昧でした。 いろいろと指摘して頂きありがとうございます! サイトまで紹介してもって..... 投稿初めてだったのですごい助かりました! 次回から気を付けます!!
m.ts10806

2018/12/28 06:34

> 大きいほうを表示する でしたら2つ別個で作ったほうが扱いやすいですね。
guest

0

既に解答きてましたね
私もfor文使うバージョンを作ってみました。
参考になるかはわかりませんが。

Java

1 public static void main(String[] args) throws Exception { 2 //List使うとき 3 List<Integer> numList = new ArrayList<>(); 4 //配列使うとき 5 int[] numArray = new int[10]; 6 7 for (int i = 0; i < 10; i++) { 8 //乱数の生成 9 int randomNum = (int)(Math.random()*5)+1; 10 11 //Listに値を追加する 12 numList.add(randomNum); 13 //配列の i 番目に値を追加する 14 numArray[i] = randomNum; 15 } 16 17 for (int i = 0; i < 10; i++) { 18 //表示 19 System.out.println("numListの" + i + "番目" + numList.get(i)); 20 System.out.println("numArray" + i + "番目" + numArray[i]); 21 } 22 }

投稿2018/12/28 06:03

編集2018/12/28 06:04
azuapricot

総合スコア2341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yuukiy

2018/12/28 06:18

コメント付きで分かりやすかったです! ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問