2013-04-05 3 views
0

из-за одного проекта я должен использовать псевдослучайные числа с нормальным распределением.Случайное число - выберите семя

В связи с этим, я обычно положить это вниз:

nn_u = complex((normrnd(0,1.0,size(H_u))),(normrnd(0,1.0,size(H_u)))); 
nn_v = complex((normrnd(0,1.0,size(H_u))),(normrnd(0,1.0,size(H_u)))); 
nn_w = complex((normrnd(0,1.0,size(H_u))),(normrnd(0,1.0,size(H_u)))); 
size(H_u) = [4096,1]; 

Таким образом, у меня нет никакого реального доступа к числу семян. Я ожидаю, что, используя вышеупомянутую форму, будет 6 семян, это означает одно другое семя для любой из шести раз называемых функцией normrnd.

То, что я хотел бы сделать в данный момент, состоит в том, чтобы генерировать шесть независимых представлений, точно так же, как это происходит выше, только с одной начальной точкой, которую я могу выбрать из диапазона [1,999].

Для достижения этой цели я думал, чтобы продолжить этот путь:

n = 4096; 
nn_tmp = normrnd(0,1,[n*6,1]); 
nn_u = complex(nn_tmp(1:n,1),nn_tmp(n+1:2*n,1)); 
nn_v = complex(nn_tmp(2*n+1:3*n,1),nn_tmp(3*n+1:4*n,1)); 
nn_w = complex(nn_tmp(4*n+1:5*n,1),nn_tmp(5*n+1:6*n,1)); 

Но этот путь, я не имею никакого прямого доступа к потомству; Я даже не знаю, есть ли какая-то операция, которую я сделал бы, с сильной теоретической проверкой.

Любая поддержка будет приветствоваться.

+2

Вы видели http://stackoverflow.com/questions/4682080/ как установить-custom-seed-for-pseudo-random-number-generator? – wakjah

+1

Сравнение 'RandStream' vs' rng' для интересов: http://blogs.mathworks.com/loren/2011/07/07/simpler-control-of-random-number-generation-in-matlab/, но Я думаю, что оба будут работать на вас – Dan

ответ

2

Я думаю, что вы можете использовать rng семян, а затем использовать randn вместо normrnd для вашей проблемы

Так что-то вроде

SEED = 120; %for example 
rng(SEED, 'twister'); 
nn_u = complex(randn(size(H_u)),randn(size(H_u))); 
nn_v = complex(randn(size(H_u)),randn(size(H_u))); 
nn_w = complex(randn(size(H_u)),randn(size(H_u))); 
Смежные вопросы