我是Matlab的新手,我正在尝试创建一个m-by-n矩阵,其中包含指定范围内的数字(即0到250之间)和指定的步骤(即[0:10:250])
是否有相同的功能或解决方法:
r = randi ( [a b], m , n )
我可以自己指定步骤吗?
答案 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()中。