我对 Matlab 很陌生,正在尝试创建一个 m×n 矩阵,其中包含指定范围内(即 0 到 250 之间)的数字,并具有指定的步长(即 [0:10:250])。
是否有等效的功能或解决方法:
r = randi ( [a b], m , n )
我可以在哪里自己指定步骤?
claudiop 肯定有一个很好的建议,但是如果您有一组要从中随机选择的数字,另一种方法是选择包含所需数字的向量的随机索引
nums = 0:10:250;
randIdxs = randi([1,numel(nums)],m,n);
nums(randIdxs);
它从nums
包含您想要随机切换的数字的向量中随机选择数字。当所有数字之间没有明确的模式时,此解决方案会变得更加有用,例如[3,5,7,13,23,37]
. 素数之间没有明确的间距或函数,所以如果你想随机选择素数,这个解决方案会很好。
更新
编辑上面的代码以numel
代替length
数字在多维数组中的情况。根本没有太大的变化
您可以将randi
函数用于 0 到 25 之间的数字,然后将结果乘以 10。
r = mystep * randi ( [a b] , m , n )
考虑从一组固定范围 ([ab]) 上的随机整数到另一个带有跳跃的集合的转换。乘法应该注意跳过......然后小心结束条件:
r = 10*randi([0 25], m, n);
我把通用公式留给你......如果你愿意,你可以把它包装在另一个函数randi_skip()中。