0

I would expect the below code to generate (quasi) random numbers between 0.9 and 1.0 for RH.

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`

However, when I run this code I get value between 0.9 and 0.933(3sf). Why is this the case?

1 Answers1

1

$RANDOM is, at most, 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.

Your modulus will have no effect as all generated numbers will be restricted to that range.

Joe
  • 29,416
  • 12
  • 68
  • 88