【问题标题】:MATLAB: how can I generate 2 random numbers which sum is less than 1? [duplicate]MATLAB:如何生成 2 个总和小于 1 的随机数? [复制]
【发布时间】:2014-02-13 21:05:18
【问题描述】:

有人知道如何生成两个总和小于一的随机数吗?

我只找到了描述如何生成 2 个随机数加起来为 1(通过归一化)的主题

【问题讨论】:

  • 显而易见的解决方案是将它们标准化为小于一的任何值。您想实现某种分布还是希望您的数字具有某些属性?
  • 我现在看到条件是“总和 小于”,而不是“总和 等于”。所以我要撤回我的重复问题投票

标签: matlab random numbers


【解决方案1】:
  1. 生成第一个随机数 r1。
  2. 生成一个小于 1 的随机数作为随机和。
  3. 将 r2 定义为 (sum - r1)。

【讨论】:

  • 我想您需要先生成 sum,然后确保生成的 r1 小于 sum。 (或生成大于 r1 的总和)否则您可能会拥有 r1=0.8, sum=0.4, r3=-0.4,我认为这是不受欢迎的。
  • 我也想知道,但原始帖子对这两个数字没有限制......只有它们的总和。
  • 您的回答确实是正确的,但在这种情况下,我建议您提及允许负数的假设。这可能对提问者更有帮助!
  • 非常感谢您的建议!
  • 对不起,如果我再次打扰你......如果我想生成第三个变量,它的平方值小于前两个变量的乘积,我该怎么办?在实践中,我想做的是生成一个正定 2x2 矩阵...
【解决方案2】:

假设你不太关心分布:

x = rand(2,1);
if sum(x)>1
   x=x/2;
end

【讨论】:

    【解决方案3】:

    修改normKrumpe's answer,我建议

    1. 将总和生成为随机数。
    2. 生成一个小于(或 r1。
    3. r2 = sum-r1.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-03
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      相关资源
      最近更新 更多