我正在尝试生成一些准随机数以输入蒙特卡洛模拟。我正在使用bash。我似乎遇到了语法错误,现在我将范围缩小到了这段代码。
randno4=($RANDOM % 100001)
upper_limit4=$(echo "scale=10; 1*75.3689"|bc)
lower_limit4=$(echo "scale=10; 1*75.1689"|bc)
range4=$(echo "scale=10; $upper_limit4-$lower_limit4"|bc)
t_twall=`echo "scale=10; ${lower_limit4}+${range4}*${randno3}/100001" |bc`
echo "$t_twall"
有谁知道为什么我下面的输出而不是75.3689和75.1689之间的值,因为那是我所期望的?
(standard_in) 1: syntax error
第一行应如下所示:
randno4=$((RANDOM % 100001))
(( ))
是bash算术运算符,以开头$
,该值替换为:$(( ))
当你写
randno4=( )
您尝试使用错误的语法为算术表达式提供ARRAY。
参见http://wiki.bash-hackers.org/syntax/arith_expr
最后,就像Etan Reisner所说的那样,您还可以在未定义的t_twall分配行中使用$ randno3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句