【发布时间】:2010-12-25 22:18:40
【问题描述】:
您好,我正在尝试在 MATLAB 中生成具有随机 MEAN 值的随机数。
例如,如果我使用
e = mean(rand(1000,1))
e 的答案总是接近于0.5。
我想要的是e(平均值)的值是随机的,
这样e 可以是 0.1、0.2、0.3 等...
我使用是否正确
e = mean( unifrnd(0,1,[1000,1]) )?
谢谢
【问题讨论】:
您好,我正在尝试在 MATLAB 中生成具有随机 MEAN 值的随机数。
例如,如果我使用
e = mean(rand(1000,1))
e 的答案总是接近于0.5。
我想要的是e(平均值)的值是随机的,
这样e 可以是 0.1、0.2、0.3 等...
我使用是否正确
e = mean( unifrnd(0,1,[1000,1]) )?
谢谢
【问题讨论】:
您必须解释您想要的均值分布。当然,您希望它是随机的,但即使是随机也有顺序。请解释一下。
如果您想要一个正态分布的均值,您可以缩放变量 [z = (x - mu) / sigma] 并随机更改 mu。如果您需要另一个均值分布,则存在类似的公式。
再次,请进一步解释。
【讨论】:
也许您想用randn 生成正常分布的随机数X~N(0,1)。然后您可以将平均值和标准差更改为随机的。举个例子:
N = 1000;
mu = rand*10 - 5; %# mean in the range of [-5.0 5.0]
sigma = randi(5); %# std in range of 1:5
X = randn(N, 1)*sigma + mu; %# normally distributed with mean=mu and std=sigma
【讨论】:
相反,您为什么不只生成随机数,然后根据平均值所在的位置与您希望平均值所在的位置更改生成的数字范围?
【讨论】:
您还想要什么其他属性?你可以这样做:
nums = (rand(1000,1)+rand())/2
这将使您的数组移动一个随机数,同时也移动平均值。不过,这将保持相同的标准偏差。这样的事情会改变两者:
nums = (rand(1000, 1)*rand()+rand())/2
【讨论】:
如果您希望样本具有完全给定的平均值mu,那么我将强制样本平均值为该值:
x = some_random_variable_generator(arguments);
x = x + (mu - mean(x));
那么你就完成了。
【讨论】: