【发布时间】:2012-10-13 17:43:34
【问题描述】:
A = [8 1 5; 1 4 2; 7 5 2];
Max = 5
B = randi(Max);
现在我有一部分代码可以生成一个随机数。我希望从数字列表中生成一个随机数,在本例中是第一行中列出的数字 (8 1 5)。
除了使用 randi 之外,还有其他函数可以随机生成第一行中列出的数字之一,同时满足 Max 标准吗?
【问题讨论】:
A = [8 1 5; 1 4 2; 7 5 2];
Max = 5
B = randi(Max);
现在我有一部分代码可以生成一个随机数。我希望从数字列表中生成一个随机数,在本例中是第一行中列出的数字 (8 1 5)。
除了使用 randi 之外,还有其他函数可以随机生成第一行中列出的数字之一,同时满足 Max 标准吗?
【问题讨论】:
根据您指定的内容,我建议如下:
A = [8 1 5; 1 4 2; 7 5 2];
% get a random number from row 1
index = randperm(length(A(1,:)));
number = A(1,index(1))
% get a randome number from row 1 that does not exceed Max
max = 5;
condition = find(A(1,:) <= max);
index = randperm(length(A(1,condition)));
number = A( 1, condition(index(1)))
希望这能提供一些想法,
【讨论】:
最简单的方法是使用arrayfun:
B = arrayfun(@randi, A(1,:))
【讨论】:
arrayfun(@randi, A(1,[2 2 2]))?
8 1 5。还有标准是它没有超过Max = 5。因此,这个例子中的随机数可以是1 or 5。
Max = 5。