matlab中的随机数生成器问题

理查德

我有一个问题,我无法弄清楚。对于模拟,我随机生成人工数据,随机绘制方差和平均值为 0。为了实现这一点,我首先创建一个可能方差的向量,然后随机绘制向量的索引,如下例所示

%% Covariance Matrix

% Variances of explanatory variables
var1 = 0.1:0.1:100;
var2 = 0.1:0.1:100;
var3 = 0.1:0.1:100;

%% Randomly selecting variances

% if exist('s','var')
%     rng(s) % Loading Random generator settings for replication
% else
%     s=rng; % Saving Random generator settings for replication
% end

ind_1=randi([0 1000]);
ind_2=randi([0 1000]);
ind_3=randi([0 1000]);

var_11=var1(ind_1);
var_22=var2(ind_2);
var_33=var3(ind_3);

出于某种原因,随机数生成器似乎在第一次 (ind_1=815, ind_2=906, ind_3=127) 和第二次运行 (ind_1=914, ind_2=632, ind_3=97) 重新启动后给我相同的数字matlab,如果我先生成方差向量。我也能够在不同的 PC 上复制它。是否有我忽略或我正在制作的功能,我会想象我是一个严重的错误?(我很清楚matlab中只有伪随机数,但这对我来说似乎太伪了)

谢谢,理查德

安克吉

这是因为matlab中的seed generator,当你启动matlab的时候总是一样的看看这个

>> rng('default')
>> ind_1=randi([0 1000])
ind_2=randi([0 1000])
ind_3=randi([0 1000])
ind_1=randi([0 1000])
ind_2=randi([0 1000])
ind_3=randi([0 1000])
rng('default')
ind_1=randi([0 1000])
ind_2=randi([0 1000])
ind_3=randi([0 1000])

ind_1 =

   815


ind_2 =

   906


ind_3 =

   127


ind_1 =

   914


ind_2 =

   632


ind_3 =

    97


ind_1 =

   815


ind_2 =

   906


ind_3 =

   127

因此,您唯一需要做的就是每次生成新数字时更改初始种子:

rng('shuffle')之前执行 it reseeds the generator using a different seed based on the current time.

>> rng('default')
>> [randi([0 1000]), randi([0 1000]), randi([0 1000])]

ans =

   815   906   127

>> rng('shuffle')
>> [randi([0 1000]), randi([0 1000]), randi([0 1000])]

ans =

   404    10   838

>> [randi([0 1000]), randi([0 1000]), randi([0 1000])]

ans =

    31   459   534

>> rng('shuffle')
>> rng('shuffle')
>> [randi([0 1000]), randi([0 1000]), randi([0 1000])]

ans =

   708   963    21

>> rng('default')
>> [randi([0 1000]), randi([0 1000]), randi([0 1000])]

ans =

   815   906   127

>> [randi([0 1000]), randi([0 1000]), randi([0 1000])]

ans =

   914   632    97

>> rng('default')
>> [randi([0 1000]), randi([0 1000]), randi([0 1000])]

ans =

   815   906   127

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章