Matlab 生成具有相同标准和平均值的新列表

Matlab 生成具有相同标准和平均值的新列表,matlab,random,std,mean,Matlab,Random,Std,Mean,如何从与原始列表具有相同平均值和标准偏差的随机数生成新列表 我尝试了newlist=mean(list)+std(list)*randn(100,1);这是我在Matlab网站上发现的,但它生成的std和平均值与原始值略有不同,因为新的平均值总是更大 诀窍是生成平均值为0、标准偏差为1的随机数。我们通过生成任何旧的随机数来实现这一点,然后固定均值和标准差 % generate your random numbers r = randn(100, 1); % scale the variance

如何从与原始列表具有相同平均值和标准偏差的随机数生成新列表


我尝试了newlist=mean(list)+std(list)*randn(100,1);这是我在Matlab网站上发现的,但它生成的std和平均值与原始值略有不同,因为新的平均值总是更大

诀窍是生成平均值为0、标准偏差为1的随机数。我们通过生成任何旧的随机数来实现这一点,然后固定均值和标准差

% generate your random numbers
r = randn(100, 1);

% scale the variance
r2 = r / std(r);

% shift the mean
r3 = r2 - mean(r2);

%check your answer
abs(mean(r3)) < sqrt(eps)
abs(std(r3) - 1) < sqrt(eps)
%生成您的随机数
r=randn(100,1);
%衡量差异
r2=r/std(r);
%中庸
r3=r2-平均值(r2);
%检查你的答案
abs(平均值(r3))

现在
newlist=mean(list)+std(list)*r3
应该会给你你所需要的。

很抱歉用一个问题来回答一个问题,但我必须问

为什么需要确保随机数向量的平均值与原始向量完全相同?同样,为什么标准偏差必须完全相同

如果我运行蒙特卡罗模拟或类似的方法,我会试图发现可能发生的情况。 如果调整随机数,使平均值精确为X,标准偏差精确为Y,则会降低模拟包含极端事件的可能性。反过来,这意味着事情出错的可能性更小

这些类型的转换作为一个学术练习是很好的,但是,我非常担心在现实世界中使用这种类型的方法

  • 你破坏了模拟的全部目的
  • 如果你的方法是如此敏感,以至于它们不起作用,那么平均值和标准偏差就会偏离任意小的数值,这本身就应该告诉你一些事情

  • 100点可能不足以得到完全相同的平均值和标准偏差。尝试更多的分数。