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