質問: Math.floor(rn); ``` この場合、指定できるパラメーターは平均で、範囲を決めることができません。 まれに大きな値が返されることがあります。 この結果を、0以上1未満で返すか、または範囲内の整数で返すようにするにはどうしたら良いでしょうか。 そもそも指数分布を使うのが間違いでしょうか? 単純に二次関数などを使って重み付けを行うべきでしょうか? (二次関数で上手く行くことは確認済みです。) よろしくお願いします。
回答: > > この場合、指定できるパラメーターは平均で > > > 正確には,「指定できるパラメータは平均の逆数」だと思います. なので,平均を`0.8`にしたければ,`lambda = 1.0/0.8`を指定する必要があります. ちなみに,平均を`0.25`くらいにすると,だいたい`0 <= P <= 1`の範囲に収まります. が,指数分布を使う限り`Math.random()`の値が`1.0`に近いと,結局無限大に近い値になります. 内部で使用する一様分布の範囲を調整して,平均を調整すれば不可能ではありませんが... (例えば 0 から 0.9 までの一様分布で,平均を 0.43 くらいにする,とか)