1

私は半開間隔 [0,1) で浮動小数点値を返す疑似乱数ジェネレーターに慣れています。

閉区間 [0,1] で値を返すことができる RNG への参照を見てきました。たとえば、この Mersenne Twister の実装です

数学的な理由から、一方または両方のエンドポイントを除外したい理由がわかります。

exponentially_distributed=-logf( 1.0-rng() )

の場合、常に有効な数値が得られます0.0<=rng()<1.0

しかし、[0,1] を生成する rng を [0,1) を生成する rng に置き換えると、実質的な違いが生じるケースは考えられません。

閉区間 [0,1] で値を返す浮動小数点疑似乱数ジェネレーターが絶対に必要な状況は?

4

3 に答える 3

2

たぶん、イベントが発生する確率をランダムに生成している場合はどうでしょうか。0を許可する場合は、1を許可する必要があります。

于 2013-02-28T18:54:37.447 に答える
1

クローズドインターバルがいつ役立つかはわかりませんが、オープンエンドインターバルが唯一の合理的な使用方法のようです。

コイントスを考えてみましょう:

が頭で、残りが尾であると言う場合rnd() < 0.5、閉じた間隔を使用すると、頭よりも多くの尾が得られます。裏がいくつあるかは、実際に 1 になる可能性によって異なります。

于 2013-02-28T19:01:40.223 に答える
0

ハーフ オープン インターバルを使用する説得力のある理由は、配列のランダムな配列インデックスを選択するユース ケースです。[0, 1) から [0, arrayLength] の整数にスケーリングする場合、多くの言語実装では配列のインデックスではないため、値 arrayLength を取得しないと便利です。たとえば、Java と ArrayIndexOutOfBoundsException です。ここでハーフオープンインターバルはとても便利です。

閉区間 [0, 1] を持つ理由は、アルビンの確率引数です。ただし、数学的に言えば、[0, 1] で 1 を含む特定の乱数を選択する確率はゼロであることに注意してください。ただし、疑似乱数ジェネレーターの場合は、時々ポップアップします。

于 2013-02-28T19:10:01.000 に答える