在闭合区间中生成随机实数的Matlab函数



Matlab中有任何函数可以在闭合区间中生成随机实数。我在unifrnd()中发现了一些东西,但它在开区间中生成数字。如果我使用unifrnd(x,y);,我得到(x,y)间隔,而不是[x,y]。

考虑到注释中关于准确性的讨论,您可以使用以下内容:

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

这本质上是在离散区间表示中添加了一个"点",考虑到了基于所使用数字大小的准确性。unifrnd()本质上是rand()的包装器(这意味着你不需要统计工具箱来完成这项工作),因此它实际上只是在(0,1)上缩放均匀分布。不过,如果你担心端点,那很重要,因为你不能得到比eps的区间长度大小的乘积更精细的结果。

最新更新