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
的区间长度大小的乘积更精细的结果。