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伪随机生成器的种子?
谢谢!
答案 0 :(得分:1)
使用bash 4.2.45
为我工作Q1:只要bash和python中的随机数生成器不同,应该没问题。
Q2:问题是什么?
Q3:seq 0 1 $(($ NEXP-1))
Q4:通过$ {array_seed [$ i]}引用数组元素(可以在bash手册中找到)。
问题5:如果你使用Linux,你可以阅读'man urandom'。