【问题标题】:Random Number in Octave八度中的随机数
【发布时间】:2013-05-05 06:44:12
【问题描述】:

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

谢谢!

【问题讨论】:

  • 你确定小数点后4位是真正的精度并且在显示过程中没有四舍五入吗?

标签: matlab random octave


【解决方案1】:

来自Octave docs

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

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

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

还有output_precision,可以按照here进行设置:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      format long
      

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

      formay short
      

      【讨论】:

        猜你喜欢
        • 2017-01-02
        • 2012-11-23
        • 1970-01-01
        • 1970-01-01
        • 2014-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多