【发布时间】:2013-05-05 06:44:12
【问题描述】:
我需要生成一个介于 0.0000001 和 1 之间的随机数,我一直在使用 rand(1) 但这只能给我 4 个小数点,还有其他方法可以生成吗?
谢谢!
【问题讨论】:
-
你确定小数点后4位是真正的精度并且在显示过程中没有四舍五入吗?
我需要生成一个介于 0.0000001 和 1 之间的随机数,我一直在使用 rand(1) 但这只能给我 4 个小数点,还有其他方法可以生成吗?
谢谢!
【问题讨论】:
来自Octave docs:
默认情况下,Octave 以人类可读的形式显示 5 个有效数字(选项“短”与矩阵的“松散”格式配对)。
所以这可能是您打印值的方式而不是值本身的问题。
同一页面显示了除 short 之外的其他输出格式,您可能想要查看的是 long,给出 15 个有效数字。
还有output_precision,可以按照here进行设置:
old_val = output_precision (7)
disp (whatever)
old_val = output_precision (old_val)
【讨论】:
将 output_precision 设置为 7 应该没问题 :)
【讨论】:
设置输出精度无济于事,因为理论上该数字仍然可以小于 0.0000001,但您只会显示前 7 位数字。最简单的方法是:
req=0;
while (req<.0000001)
req=rand(1);
end
这可能会让您陷入循环,但它会产生正确的数字。要显示所有小数,您还可以使用以下命令:
format long
这将显示 15 位小数。要切换回去:
formay short
【讨论】: