0
我使用HPC運行Matlab作業數組。每個作業執行一個涉及隨機數的循環。每份工作中我都會得到相同的隨機數。我怎樣才能解決這個問題,並獲得每個工作不同的隨機數字?在做數組時,在Matlab中更改隨機數的種子
我發現了一個類似的問題here但我認爲這是一個比我的更復雜的情況:而不是每個作業中的parfor
循環,我只有一個for
循環。
這裏我的代碼的簡化版本
%%%% main.m %%%%%
clear all
n=5;
K=2;
H=5; %number of jobs per worker
%%%% f.m %%%%%
RVall=zeros(n,K,H);
for s=1:H
RVall(:,:,s) = unifrnd(0,1,n,K);
end
filename = sprintf('RVall.%d.mat', ID);
save(filename, 'RVall')
的sh文件是
#Example
#$ -S /bin/bash
#$ -l h_vmem=4G
#$ -l tmem=4G
#$ -l h_rt=360:0:0
#$ -cwd
#$ -j y
#Run 200 tasks where each task has a different $SGE_TASK_ID ranging
from 1 to 200
#$ -t 1-200
#$ -N try
date
hostname
#Output the Task ID
echo "Task ID is $SGE_TASK_ID"
matlab -nodisplay -nodesktop -nojvm -nosplash -r "main; ID = $SGE_TASK_ID; f; exit"
在這個例子中,你會看到RVall.1=RVall.2=...=RVall.200