0

Bash スクリプトは、実行にランダム シードを必要とする Python スクリプト (「main.py」) を制御します。シミュレーションのいくつかの実現を目指して、それぞれにランダムなランダムシードを用意し たいと思います。

(Bash スクリプトで) NEXP 整数のランダムな配列を初期化しようと考えましたが、適切に実行されていないと思います。実際、配列の初期化が間違っています。コードは次のとおりです。

NEXP=10
array_seed = [$NEXP]
for j in `seq 0 1 $NEXP`; do
    array_seed[$j]=$RANDOM
    echo $array_seed[$j]
done

for A in `seq 0 0.1 1`; do          #A is a parameter of the simulation
    for i in `seq 0 1 $NEXP`; do    #10 realiz. of the process for each A
        SEED=$array_seed[$i]
        ./main.py $A $SEED > output-$A-$i.dat
        done
done

そしてここで私が得たもの

23041[0]
23041[1]
23041[2]
23041[3]
...

質問 #1 (解決済み):私は何を間違えましたか? $NEXP - 1 をseq内に配置して、0 から NEXP-1 までのインデックスを持つ配列を取得する方法は? 二重括弧で試してみましたが、うまくいきませんでした。

回答 (Ser Jothan Chanes による):

NEXP=10
array_seed = [$NEXP]
for i in `seq 0 1 $(($NEXP-1))`; do
    array_seed[$i]=$RANDOM
    echo ${array_seed[$i]}
done

質問 2:これは、シミュレーションを独立して実現するという問題に取り組む良い方法ですか? また、シミュレーション/実験間の相関をさらに減らすにはどうすればよいでしょうか?

質問 #3:最後に、Bash 疑似乱数ジェネレーターのシードも処理する必要がありますか?

ありがとうございました!

4

1 に答える 1