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 的数组?我试过用双括号表示它不起作用。

答案(由 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

1

使用 bash 4.2.45 为我工作

Q1:应该没问题,只要 bash 和 python 中的随机数生成器不同。

Q2:问题是什么?

Q3:序列 0 1 $(($NEXP-1))

Q4:通过 ${array_seed[$i]} 引用数组元素(可以在 bash 手册中找到)。

Q5:如果你使用Linux,你可以读到'man urandom'。

于 2013-06-07T09:58:40.497 回答