【问题标题】:Why do I not see the full expected range of random numbers? [duplicate]为什么我看不到随机数的全部预期范围? [复制]
【发布时间】:2015-02-14 17:32:35
【问题描述】:

我希望下面的代码能够为 RH 生成介于 0.9 和 1.0 之间的(准)随机数。

randno5=$((RANDOM % 100001))
upper_limit5=$(echo "scale=10; 1*1.0"|bc)
lower_limit5=$(echo "scale=10; 1*0.9"|bc)
range5=$(echo "scale=10; $upper_limit5-$lower_limit5"|bc)
RH=`echo "scale=10; ${lower_limit5}+${range5}*${randno5}/100001" |bc`

但是,当我运行此代码时,我得到的值介于 0.9 和 0.933(3sf) 之间。为什么会这样?

【问题讨论】:

  • 我在对您的previous question 的评论中涵盖了RANDOM 的范围。
  • 你做到了,但我第一次没有得到它。

标签: bash random bc


【解决方案1】:

$RANDOM 最多为 32767:

   RANDOM Each time this parameter is referenced, a random integer between
          0 and 32767 is generated.  The sequence of random numbers may be
          initialized by assigning a value to RANDOM.  If RANDOM is unset,
          it  loses  its  special  properties,  even if it is subsequently
          reset.

您的模数将不起作用,因为所有生成的数字都将被限制在该范围内。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-26
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2011-03-01
    • 2012-04-25
    相关资源
    最近更新 更多