【问题标题】:MATLAB generate random numbersMATLAB 生成随机数
【发布时间】: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 random numbers


    【解决方案1】:

    必须解释您想要的均值分布。当然,您希望它是随机的,但即使是随机也有顺序。请解释一下。

    如果您想要一个正态分布的均值,您可以缩放变量 [z = (x - mu) / sigma] 并随机更改 mu。如果您需要另一个均值分布,则存在类似的公式。

    再次,请进一步解释。

    【讨论】:

      【解决方案2】:

      也许您想用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
      

      【讨论】:

        【解决方案3】:

        相反,您为什么不只生成随机数,然后根据平均值所在的位置与您希望平均值所在的位置更改生成的数字范围?

        【讨论】:

        • 嗨,感谢您的快速回复。我如何确定平均值在哪里?我希望平均值是随机的,可以是 0.9,也可以是 0.1,不以 0.5 为中心……我认为这与分布有关,但我不确定
        • 哦,我以为您正在尝试生成具有特定平均值的随机数。
        【解决方案4】:

        您还想要什么其他属性?你可以这样做:

        nums = (rand(1000,1)+rand())/2
        

        这将使您的数组移动一个随机数,同时也移动平均值。不过,这将保持相同的标准偏差。这样的事情会改变两者:

        nums = (rand(1000, 1)*rand()+rand())/2
        

        【讨论】:

        • 嗨,我试过 nums =mean(rand(1000,1)+rand())。我多次执行计算,有时我得到的平均值> 1。如果我生成 0 到 1 之间的随机数,平均值的值不应该在 0 到 1 之间
        • 是的,但是您将两个随机数相加,因此可以得到大于 1 的数字。如果您想将结果限制在 0 和 1 之间,请尝试新的编辑
        【解决方案5】:

        如果您希望样本具有完全给定的平均值mu,那么我将强制样本平均值为该值:

        x = some_random_variable_generator(arguments);
        x = x + (mu - mean(x));
        

        那么你就完成了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-30
          • 1970-01-01
          • 1970-01-01
          • 2012-04-20
          • 2017-01-08
          • 2019-04-13
          相关资源
          最近更新 更多