※ ChatGPTを利用し、要約された質問です(原文:一様乱数?疑似乱数?)
一様乱数と疑似乱数の違いとは?ヒストグラムを作成する方法
このQ&Aのポイント
質問文章では、一様乱数と疑似乱数の違いについて知りたいということです。
また、ヒストグラムを作成する方法についても質問があります。
Math.randomを用いる方法とRandomクラスの方法の違いについても疑問があります。
0.0以上~1.0未満の範囲のdouble型一様乱数rdmを1000個発生させて、ヒストグラムをつくりたいのですが、このような書き方で良いのか、ご教示願えませんでしょうか。
ヒストグラムと言っても、グラフではなく、区間0≤u<0.1、0.1≤u<0.2、…、0.9≤u<1.0の10区間とし、配列aaに格納しているだけです。
また、「Math.random」を用いるやり方は理解できるのですが、下記のような書き方はいまいち納得できません。
疑問点1つ目、前者は毎回発生する乱数が違うのに、後者は同じですよね?なぜでしょうか。後者は毎回決まった値が出るので、初期値(seed)から決まった計算をしているということでしょうか。
疑問点2つ目、//kokoの次の行に x = rdm.nextDouble(); のように発生させた乱数を一時的に入れておかなくてもよいのでしょうか。
import java.util.*;
public class test {
public static void main(String [] args) {
int aa [] = new int [10];
long seed = 999L;
Random rdm = new Random();
rdm.setSeed(seed);
for(int i = 0; i < 1000; i++){
for(int j=1; j<=10; j++){//koko
if(rdm.nextDouble() < ((j-1)*0.1) && rdm.nextDouble() >= (j*0.1)) aa[j-1] = aa[j-1] + 1;
}
}
for(int i=0; i<10; i++){
System.out.println( aa[i] );
}
}
}
お礼
納得いきました。ご丁寧にありがとうございました。