Trabalhar com o $RANDOM
diretamente no Bash provavelmente é possível, mas eu o criaria em outro idioma apenas porque é mais fácil de prever. O Perl parece ser o mais simples de ler e formatar.
error=$(perl -e 'printf("%.2f\n", rand()/2)')
Em vez de calcular o log, em seguida, calcular um erro multiplicado por isso e adicioná-lo, basta adicionar 1
ao erro e multiplicar o primeiro resultado em uma etapa:
error=$(perl -e 'printf("%.2f\n", rand()/2 + 1)')
echo "l($i) * $error" | bc -l
Eu acho que há também um argumento para ficar em um idioma (ao invés de puncionar um número entre as coisas como uma string). Ainda temos que passar $i
, mas podemos lidar com o resto em Perl:
export i=2
perl -e 'print log($ENV{i})*(rand()/2+1)'