![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
下記のような分布関数に関して質問です。
W(x) = lim_{m to 8} 1/C exp(-A sum_{k,j=1}^{m}(x_k * x_j))
------------------------------
ここで
lim_{m to 8} : mが無限大まで
sum_{k,j=1}^{m} : kとjがmまでの総和
A, C: 定数です。
x : 作成したい乱数です。
------------------------------
コンピュータ上にて、このような分布関数を持つ乱数を生成する
というのはどういう方法があるのでしょうか?
手がかりだけでも教えていただければと思います。
No.1ベストアンサー
- 回答日時:
一般論として
ある分布関数Fが与えられたとする。
[0,1]上の一様分布に従う確率変数をUとし、X=F(-1)(U)で確率変数X
を定義する。(F(-1)はFの逆関数の意味)
Xの分布関数を考えると、
P(X≦x)=P(F(-1)(U)≦x)=P(U≦F(x))=F(x)
(Fは単調増加なのと、Uは一様分布なのでP(U≦a)=aを使った)
よって、確率変数Xの分布関数はFである。
すなわち、一様乱数UをFの逆関数で返したF(-1)(U)は分布関数Fを
持つ乱数になる。
このような一般的なことは既知としてのご質問でしょうか。
質問の式は見たことのない形の分布関数でよくわからないのですが、
y=W(x)としてxについて解きなおすと、
x=W(-1)(y)=α/(1+α)、ここにα=log(1/Cy))^(1/2A)
のようになるでしょうか?
そこで、一様乱数Uに対してW(-1)(U)を作れば、これが分布関数W
をもつ乱数になると思います。
(Wが分布関数の条件を満たすのかどうかも私にはわかりませんが。
どのような経緯でこのような関数が出てきたのでしょうか?)
それとも、一様乱数から正規乱数を作るボックス・ミュラー法の
ような特別なテクニカルな方法を期待してのご質問でしょうか?
とりあえず、ご参考まで。
回答ありがとうございました。
逆関数を作成するということ自体存じておりませんでした。
回答していただいたことはすごい参考になります。
これを参考にプログラムを作ってみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報