3

Matlab には、閉区間でランダムな実数を生成する関数があります。で何かを見つけましたunifrnd()が、開いた間隔で数値を生成しています。使用するunifrnd(x,y);と、[x,y] の代わりに (x,y) 間隔が得られます。

4

1 に答える 1

3

コメントでの精度の議論を考えると、次のようなものを使用できます。

mag = floor(log10( y - x))  
num = unifrnd(x-(10^mag)*eps, y+(10^mag)*eps)

これは基本的に、使用している数値のサイズに基づく精度を考慮して、離散間隔表現に 1 つの「ポイント」を追加します。 unifrnd()は本質的にラッパーrand()です (これは、これを行うために統計ツールボックスを実際に必要としないことを意味します)。したがって、(0,1) で一様分布をスケーリングするだけです。ただし、エンドポイントについて心配している場合は、間隔の長さの積よりも細かくすることはできないため、それは重要ですeps

于 2016-05-10T18:29:34.407 に答える