私はこれを持っています(疑似コード):
var a = Math.random(); // returns random number from 0 to 1
写真が示すように、より低い数字を選択する可能性を高めたいと思います。方程式 (コード) はどのように見えるべきですか?
ここで最も簡単なのは、拒否サンプリングを続行することです。
基本的に、2 次元変数 (x,y) = (Math.random(), Math.random()) をシミュレートします。正方形 [0,1][0,1] 内の点です。変数 (x,y) が描画した三角形の中にある場合は、x を取ります。
x には、探しているディストリビューションがあります。
擬似コード:
x = Math.random();
y = Math.random();
if x+y < 1:
return x;
(累積分布関数を計算して反転することにより) 1 つの確率変数のみを描画することで、実際にはそれを回避できますが、この場合ははるかに複雑になります。
逆累積分布関数は、
1 - Math.sqrt(1 - Math.random()),
それで
1 - Math.sqrt(Math.random())
必要なディストリビューションを提供します。
曲線の下の領域が 1 の合計確率を与えるように、0 での確率密度は 2 でなければならないことに注意してください。