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

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

ただいまの
回答率

90.61%

  • Java

    13526questions

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

java Mathクラスのramdomメソッドについて

解決済

回答 3

投稿

  • 評価
  • クリップ 1
  • VIEW 120

gomakasu423

score 8

 前提・実現したいこと

秀和システムわかりやすいjava入門編で勉強中です。
「-a~aの範囲の乱数をdouble yに代入せよ」という問いがわかりません。

-a~aはaの絶対値をとればいいのかな?と思ったので
double y = Math.random()*(Math.ads(a);
と書き込みましたがadsが方が不一致でエラーが出ました。

お手数ですがご教示お願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

0

こんにちは、
こちらに書いてありますが、
Java.lang.Mathクラスのrandomメソッドは0.0~1.0のdouble型の乱数を生成するメソッドです。
これをもとに、-a~aの乱数を生成します。
0.0~1.0を
(i)2倍すると0.0~2.0
(ii)1引くと-1.0~1.0
(iii)aを掛けると-a~a
のようになります。

import java.util.Random;
import java.util.Scanner;

public class Sum {
    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        double a = sc.nextDouble();
        Random rand = new Random();
        double y = (Math.random() * 2 - 1) * a;
        System.out.println(y);
    }
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/28 17:30

    ご親切にありがとうございました

    キャンセル

0

なんかいろいろ変ですが...

-a~aはaの絶対値をとればいいのかな?と思った

なぜ?絶対値の意味って知っていますか?

double y = Math.random()*(Math.ads(a); と書き込みました

absoluteの略なので、adsではなくabsです。転記ミスかもしれませんが。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/28 16:43

    ありがとうございます。
    書き換えて見ました。
    構文エラーになりましたね。

    キャンセル

  • 2018/04/28 16:50 編集

    Math.randomの戻り値は [0.0, 1.0) なので、
    これに正の数 2a をかけると範囲が [0.0, 2a) になり、
    さらに a を引くと [-a, a) になります。

    これで -a ~ a の範囲の乱数を作れますね。

    キャンセル

  • 2018/04/28 17:43

    以上、未満の書き方(笑
    閉じカッコがたりないとか

    キャンセル

0

まず、次の

double y = Math.random()*(Math.ads(a));

が型不一致なのは、aがint型だからだと思います。double型にすることでエラーは消えると思います。

つぎに、質問の本題ですが、ひんとだけいいます

Math.random()はドキュメントの通り0.0~1.0未満の数値を返します。

つまり、Math.random() * Math.abs(a)は0.0~a未満の数を返すことになります。
もう少しいうと、

Math.random() * Math.abs(a) - (a / 2)

とするとどうなるでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/28 17:16

    ありがとうございます、1/2a~-1/2aになります。

    キャンセル

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

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    javaで小数点以下の切り上げ、切捨て、四捨五入をしたい

    javaのプログラムで小数点以下の数値に対して、 切り上げ、切捨て、四捨五入する方法を教えてください。

  • 解決済

    mathクラスを使わない方法

    java初心者です。 javaでは、mathクラスを使って以下のようなプログラムで平方根を求めることができることを学びました。 public class Square {    

  • 解決済

    java 配列を使って、点数の標準偏差と各偏差値を求めたい。

    前提・実現したいこと 先ほどの総和を求めるプログラムに引き続いて 標準偏差と偏差値を求めようと思います。 ただし必ずfor文を使うという指示があります。 public

  • 解決済

    配列を関数に初期化する方法

    Javaで、配列 double []u を Math.Sin(Math.PI*x) に初期化する方法がわかりません。教えていただける方お願いします。 調べてたり何度試したりし

  • 解決済

    00

    oooooooooooooooooooooooooooooooooooooooo

  • 解決済

    メソッド作成時の不要な変数とは。

    public class MesoddoA { double kakezan(int a, int b, int c){ int d = a * b * c; return 

  • 解決済

    左シフトによる累乗の計算

    現在使っているアプリケーションで累乗の計算を行おうと思ったのですが、「^」で行うと正常な値が出力されませんでした。 標高を求める計算式で なので、 ((((Po/P)

  • 解決済

    直線の描き方

    ある線に対してある角度の線を引きたい場合どのようにすればいいのでしょうか? 例えば g.drawLine(100, 100, 200, 200); 点(100, 100)

同じタグがついた質問を見る

  • Java

    13526questions

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