2014-12-16 2 views
0

Я ожидаю, что приведенный ниже код будет генерировать (квази) случайные числа между 0.9 и 1.0 для 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` 

Однако, когда я запускаю этот код, я получаю значение между 0.9 и 0.933 (3sf). Почему это так?

+0

Я рассмотрел диапазон «СЛУЧАЙНО» в своем комментарии к вашему [предыдущему вопросу] (https://stackoverflow.com/questions/27134988/standard-in-1-syntax-error-in-bash-script). –

+0

Вы сделали, но я не получил его в первый раз. –

ответ

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. 

Ваш модуль не будет иметь никакого эффекта, так как все сгенерированные числа будут ограничены этим диапазоном.

 Смежные вопросы

  • Нет связанных вопросов^_^