在matlab中使用rand来生成限制之间的数字

时间:2011-06-20 18:01:29

标签: matlab random limit

  

可能重复:
  Is there a way in Matlab using the pseudo number generator to generate numbers within a specific range?

我想在-10到10之间得到20个随机整数,我想在matlab中使用rand函数。

我想到了10的myltiplying,然后找到了一种只获得-10到10之间的方法,并对超出限制[-10,10]的每个其他数字使用迭代来获得一个新数字在极限内。

有更好,更快的方式吗?

2 个答案:

答案 0 :(得分:7)

使用

randomIntegers = randi([-10,10],[20,1])

生成-10到10之间的随机整数向量。

答案 1 :(得分:2)

虽然Jonas的解决方案非常好,但randi并不在MATLAB的早期版本中。我相信所有版本都有rand。使用rand的解决方案是:

randomIntergers = floor(a + (b-a+1) .* rand(20,1));

其中[a,b]是您希望分发的值的范围。

如果您使用round(a + (b-a)),您将对'a'和'b'的值产生不均匀的影响。这可以使用hist()功能确认。这是因为映射到'a'和'b'的域的大小是该范围内所有其他成员的一半。