Bash中的(伪)随机数组用作Python模拟中的种子

时间:2013-06-07 09:28:11

标签: python arrays bash random

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伪随机生成器的种子?

谢谢!

1 个答案:

答案 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'。