やりたいこと
35.5 ~ 36.9のあいだで乱数を出したい
0からxまでの乱数はかんたんだが、0以外からの乱数は難しかった。
コード
#!/usr/bin/env bash
list=($(seq 355 369))
declare -i out=0
while (( out == 0)); do
out=$(printf "%s\n" "${list[@]}" | head -n $(( RANDOM % ${#list[@]})) | tail -n 1)
done
echo "scale=1; ${out} / 10" | bc
少数の扱いは面倒なので整数を最後に10で割った。
seqで出力してから、0から行数分までの乱数でランダムに1行取り出す
ただし乱数が0になると何も出力されないのでwhile
で0以外になるようにループさせた。
最後に
絶対もっとかんたんで賢い方法がある。配列とか変数とか使っててめちゃくちゃ面倒。