You can also use:
round(mod(rand.*max,max-1))+min
if you are looking to generate all the number within a specific rang randomly then you can try
r = randi([a b],1,d)
a
= start point
b
= end point
d
= how many number you want to generate but keep in mind that d should be less than or equal to b-a
If you need a floating random number between 13 and 20
(20-13).*rand(1) + 13
If you need an integer random number between 13 and 20
floor((21-13).*rand(1) + 13)
Note: Fix problem mentioned in comment "This excludes 20" by replacing 20 with 21
Generate values from the uniform distribution on the interval [a, b].
r = a + (b-a).*rand(100,1);
Best solution is randint
, but this function produce integer numbers.
You can use rand
with rounding function
r = round(a + (b-a).*rand(m,n));
This produces Real random number between a and b , size of output matrix is m*n
ocw.mit.edu is a great resource that has helped me a bunch. randi is the best option, but if your into number fun try using the floor function with rand to get what you want.
I drew a number line and came up with
floor(rand*8) + 13
r = 13 + 7.*rand(100,1);
Where 100,1 is the size of the desidered vector
http://www.mathworks.com/help/techdoc/ref/rand.html
n = 13 + (rand(1) * 7);
If you are looking for Uniformly distributed pseudorandom integers use:
randi([13, 20])
Source: Stackoverflow.com