如何从与原始列表具有相同均值和标准差的随机数生成新列表?
我试过 newlist = mean(list) + std(list)*randn(100,1);这是我在 Matlab 网站上找到的,但它生成的标准差和均值与原来的略有不同,因为新的均值总是更大。
最佳答案
诀窍是生成均值为 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)
现在 newlist = mean(list) + std(list) * r3
应该可以满足您的需求。
关于matlab - 生成具有相同 std 和 mean 的新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5676762/