- 締切済み
MATLAB で配列みたいなものを
乱数を発生させて、ヒストグラムに表示させたいのですが、 内部関数のrandをつかわずに 例えば、乗算型合同法 x(n+1)=15x(n) mod (10^6+1) x(0)=1 (x(n)を15倍して10^6+1で割ったあまりをx(n+1)とする。) で発生する数列x(n)を100万でわって0~1の乱数列が発生します。 これをヒストグラムで表したいのですが、いまいち分かりません。どうかよろしくお願いします。 内部関数を使ったものは簡単で n=10000; x=rand(1,n); hist(x); で1万個の乱数の分布がわかるのですが。 ばからしい質問ですいません。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kacchann
- ベストアンサー率58% (347/594)
ようは、求める配列を作るだけ。 流れだけ書いてみる。 (※厳密にMATLABの文法に従ってない) まず配列を作る。 size = 10^6; arr[size];//配列を作成 その配列の要素に、下記の式 x(n+1)=15x(n) mod (10^6+1) x(0)=1 で表される数列の要素を1つずつ代入する。 こんなかんじ。 x = 1;//初項 for i=1:size arr[i]=x;//(配列の)対応する要素に、項の値を代入 //次項を求める x*=15; x=rem(x, …);//mod (もしくは x %= …) endfor こうしてできた「数列の配列」の各要素を100万で割る。 for i=1:size temp=arr[i];//取って temp/=1000000;//割って arr[i] = temp;//戻す endfor こうしてできた配列arrは、求める乱数列である。(だよね?) これをhist(arr)すればよい。