用随机int数填充数组

时间:2013-09-12 12:53:41

标签: arrays matlab random

我是Matlab的新手,我正在尝试创建一个m-by-n矩阵,其中包含指定范围内的数字(即0到250之间)和指定的步骤(即[0:10:250])

是否有相同的功能或解决方法:

r = randi ( [a b], m , n )

我可以自己指定步骤吗?

3 个答案:

答案 0 :(得分:3)

claudiop肯定有一个很好的建议,但如果你想要随机选择一组数字,那么另一个选择就是选择包含你想要的数字的向量的随机索引

nums = 0:10:250;
randIdxs = randi([1,numel(nums)],m,n);
nums(randIdxs);

它会从nums向量中随机选择包含您要随机切换的数字的数字。当所有数字之间没有明确的模式时,此解决方案会变得更有用,例如[3,5,7,13,23,37]。素数之间没有明确的间距或函数,所以如果你想随机选择素数,这个解决方案就会很好。

<强>更新

编辑上面的代码,使用numel代替length,以防数字位于多维数组中。根本不是一个巨大的改变

答案 1 :(得分:2)

您可以使用randi函数,其数字介于0到25之间,然后将结果乘以10。

r = mystep * randi ( [a b] , m , n )

答案 2 :(得分:2)

考虑从固定范围([a b])上的一组随机整数到具有跳过的另一组的转换。乘法应该处理跳过...然后只需要注意结束条件:

r = 10*randi([0 25], m, n);

我将通用公式留给你......如果你愿意,你可以将它包装在另一个函数randi_skip()中。