2

我对 Matlab 很陌生,正在尝试创建一个 m×n 矩阵,其中包含指定范围内(即 0 到 250 之间)的数字,并具有指定的步长(即 [0:10:250])。

是否有等效的功能或解决方法:

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

我可以在哪里自己指定步骤?

4

3 回答 3

3

claudiop 肯定有一个很好的建议,但是如果您有一组要从中随机选择的数字,另一种方法是选择包含所需数字的向量的随机索引

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

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

更新

编辑上面的代码以numel代替length数字在多维数组中的情况。根本没有太大的变化

于 2013-09-12T13:04:15.247 回答
2

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

r = mystep * randi ( [a b] , m , n )
于 2013-09-12T12:59:30.877 回答
2

考虑从一组固定范围 ([ab]) 上的随机整数到另一个带有跳跃的集合的转换。乘法应该注意跳过......然后小心结束条件:

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

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

于 2013-09-12T13:00:07.777 回答