【问题标题】:Create random values in vector Matlab在向量 Matlab 中创建随机值
【发布时间】:2017-06-16 23:40:36
【问题描述】:

我有这个向量:

人口 = [3, 5, 0, 2, 0, 5, 10, 50, 0, 1];

我需要用 1 到 4 之间的随机值填充这个向量,只有向量中有 0 值。

我该怎么做?

编辑:有办法使用 randperm 函数吗?

【问题讨论】:

标签: matlab vector random


【解决方案1】:

首先,找到零个元素,然后生成随机值,然后替换那些元素:

Population = [3, 5, 0, 2, 0, 5, 10, 50, 0, 1];
idx = find(Population==0);
Population(idx) = 3 * rand(size(idx)) + 1;

如果需要整数(未指定),只需将最后一条语句中生成的随机数四舍五入即可,如round(3*rand(size(idx))+1);或使用randi(如@OmG 的回答所建议):randi([1,4], size(idx))

【讨论】:

  • 嗨! Find(population==0) 将返回一个带有值索引的数组?
  • @Jokesonme,是的,在您的示例中,它将返回向量:[3, 5, 9]
【解决方案2】:

您可以使用以下代码:

ind = find(~Population); % find zero places
Population(ind) = randi(4,1,length(ind)); % replace them with a random integer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 2012-10-17
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多