Случайное число - Выбрать семя

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

В этом отношении я обычно записываю это:

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));

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

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


person fpe    schedule 05.04.2013    source источник
comment
Вы видели stackoverflow.com/questions/4682080/ ?   -  person wakjah    schedule 05.04.2013
comment
Сравнение RandStream и rng для интереса: blogs.mathworks.com/loren/2011/07/07/, но я думаю, что оба варианта вам подойдут   -  person Dan    schedule 05.04.2013


Ответы (1)


Я думаю, вы можете использовать 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)));
person Dan    schedule 05.04.2013