因为一个项目我必须使用具有正态分布的伪随机数。
对于这方面,我通常会这样做:
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));
但是这样,我没有直接访问种子;我甚至不知道我所做的那种操作是否有任何强有力的理论验证。
欢迎任何支持。
答案 0 :(得分: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)));