Matlab中有没有办法使用伪数生成器生成特定范围内的数字?

Ben*_*sen 4 random matlab integer numbers range

例如:

round(7*rand(1,5))
Run Code Online (Sandbox Code Playgroud)

生成1到7之间的5个数字有没有办法在5到7之间生成5个随机数?还是抽象的呢?

Mat*_*oug 10

更普遍:

minInt = 5;
maxInt = 7;
numInts = 10;

r = randi([minInt, maxInt],[1,numInts])

r =

 6     7     7     7     6     5     5     5     7     5
Run Code Online (Sandbox Code Playgroud)

  • @MatlabDoug给你+1,因为他已经阅读了RANDI函数的文档一直到最后. (3认同)

gno*_*ice 5

首先,如果您想要生成随机数值,最好使用函数RANDI.然后,这只是相应地移动和缩放随机数的问题.以下应该给你5到7之间的随机整数:

nums = randi(3,[1 5])+4;
Run Code Online (Sandbox Code Playgroud)

编辑:正如Amro的评论和Doug的回答指出的那样,有一个更简单的解决方案,你可以直接指定范围作为RANDI的第一个参数:

nums = randi([5 7],[1 5]);
Run Code Online (Sandbox Code Playgroud)

  • 实际上你可以直接指定所需的范围:`randi([5 7],[1 5])` (4认同)