matlab - 生成具有相同 std 和 mean 的新列表

标签 matlab random std mean

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

我试过 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/

相关文章:

matlab - 如何获得这个matlab矩阵的长度(行数)?

matlab - 在 MATLAB 中的多个循环中从元胞数组中保存、提取相关数据

string - Matlab引用元胞数组中的部分字符串

Ruby:使用 `.each` 或 `.step` ,每次迭代向前推进一个随机数量

c# - 如何从种子中生成随机的人类可读颜色? C#

c++ - std::any 跨越 mingw 中的共享库边界

matlab - 为什么颜色会随着 MATLAB轮廓循环而变化?

c++ - rand() 有时输出空行,其他时候它工作得很好

c++ - 如何在 C++0x 中组合哈希值?

c++ - 无法复制文件,然后在 C++ 中执行它