2013-05-05 838 views
2

我需要生成一个介于.0000001和1之间的随机数,我一直在使用rand(1),但这只给了我4个小数点,还有其他方法可以做到这一代吗?Octave中的随机数

谢谢!

+0

您确定4位小数点是真实精度,并且在显示过程中不是四舍五入吗? – 2013-05-05 06:48:35

回答

4

Octave docs

在默认情况下,八度显示人类可读形式(与矩阵“松”格式配对选项“短”)5个显著数字。

所以这可能是一个问题,你的方式印刷价值而不是价值本身。

除了short之外,该页面还显示其他输出格式,您可能要查找的格式为long,其中包含15位有效数字。

并且也可以被设置为每hereoutput_precision

old_val = output_precision (7) 
disp (whatever) 
old_val = output_precision (old_val) 
0

设置output_precision 7,它应该是好的:)

0

设置输出精度虽然不会帮助因为理论上该数字仍然可以小于.0000001,但您只会显示前7位数字。最简单的方法是:

req=0; 
while (req<.0000001) 
req=rand(1); 
end 

这可能会让你卡在循环中,但它会产生正确的数字。要显示所有小数点,您还可以使用以下命令:

format long 

这会显示15位小数。要切换回去:

formay short