0

このプロジェクトは、iPhone 用の Obj-C にあります。ここで入手できる sfmt の double float バージョンを使用しています: http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/#dSFMT

dsmft に現在の時刻をシードした後、次のように呼び出しています。

r = dsfmt_gv_genrand_close_open()

0 と 1 の間のランダムな float を生成します。他にも 2 つのオプションがあります。

r = dsfmt_gv_genrand_open_close()
r = dsfmt_gv_genrand_open_open()

ドキュメントで、区別は 0 または 1 側が開いているか閉じているかであり、[0,1)、(0,1]、または (0,1) のように数学的に示されることを知っています。

しかし、これが何を意味するのか、または私のニーズにどちらを使用するのかわかりません。0 と 1 の間で最も均一に分散された float が必要です。

4

2 に答える 2

0

[0、1)は、生成されたフロートが0になる可能性があるが、1になることはないことを意味します(左側が閉じた間隔、右側が開いた間隔)

(0、1]は、生成されたフロートが1である可能性があるが、0になることはないことを意味します(右側のクローズ間隔、左側のオープン間隔)

(0、1)は、生成された数が0でも1でもないことを意味します。

どれを選ぶ?ライブラリは適切に記述されていると思いますので、これら3つの関数はすべて一様分布の数値を返す必要があります。選択する正確な機能は、達成しようとしていることによって完全に異なります。

于 2012-06-21T08:43:25.513 に答える
0

H2CO3さん、ありがとうございます。この質問を調べた人のために、さらに情報も見つけました。

http://en.wikipedia.org/wiki/Interval_(数学)

括弧はエンドポイントの除外を示し、角括弧は包含を示します。

したがって、ゼロを除外して 1 を含めたい場合: (0 < r <= 1)

私が使う:

r = dsfmt_gv_genrand_open_close()

これは (0,1]

于 2012-06-22T00:01:20.947 に答える