Generating random numbers within a range determined by elements in another array
4 views (last 30 days)
Show older comments
Hello,
I was wondering if there is an efficient way to generate a random integer within a range depending on an element in another array. Perhaps a small example will explain better:
1 must generate a random number in [3 7];
2 must generate a random number in [1 3];
3 must generate a random number in [44 66]
So for the vector [3 1 2] I would want to get another vector [59 4 2], for example.
I was thinking of using arrayfun to do this but I don't know if there is a more efficient way?
Any help/advice would be greatly appreciated.
Thanks
0 Comments
Accepted Answer
Iain
on 21 May 2013
Edited: Andrei Bobrov
on 22 May 2013
Array = [3 7; 1 3; 44 66];
Choose your row, "i"
NewRandom = roundingfunctionofchoice(rand(size(i)).*(Array(i,2)-Array(i,1)) + Array(i,1));
If you set i = [3 1 2], you'll get what you want.
More Answers (1)
Image Analyst
on 21 May 2013
Did you look at the help for rand() and notice the first example? Here it is:
Example 1
Generate values from the uniform distribution on the interval [a, b]:
r = a + (b-a).*rand(100,1);
Basically it all comes down to that. Do that 3 times with different a and b depending on what the 3 numbers are. Is this homework?
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!