随机数 - 选择种子

问题描述:

由于一个项目我必须利用正态分布的伪随机数。随机数 - 选择种子

要这方面,我一般把这个下来:

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/如何设置自定义种子为伪随机数发生器? – wakjah 2013-04-05 14:24:42

+1

为了利益而对RandStream和rng进行比较:http://blogs.mathworks.com/weln/2011/07/07/simpler-control-of-random-number-generation-in-matlab/但是我认为两者都适合你 – Dan 2013-04-05 14:26:49

我认为你可以使用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)));