2

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

谢谢!

4

3 回答 3

4

来自Octave 文档

默认情况下,Octave 以人类可读的形式显示 5 个有效数字(选项 'short' 与矩阵的 'loose' 格式配对)。

所以这可能是您打印值的方式而不是值本身的问题。

同一页面显示了除 之外的其他输出格式,short您可能想要查看的是long,给出 15 个有效数字。

还有output_precision可以按照这里设置的:

old_val = output_precision (7)
disp (whatever)
old_val = output_precision (old_val)
于 2013-05-05T06:50:02.250 回答
0

设置输出精度无济于事,因为理论上该数字仍然可以小于 0.0000001,但您只会显示前 7 位数字。最简单的方法是:

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

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

format long

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

formay short
于 2013-05-07T04:43:58.143 回答
0

将 output_precision 设置为 7 应该没问题 :)

于 2013-05-05T06:56:55.357 回答