How to generate random integers from the uniform distribution between two numbers

4 次查看(过去 30 天)
Assume matrix A as follows:
A = [
810 840
840 870
870 900
900 930
930 960
];
For every row in matrix A,I want to generate random integers from the uniform distribution between column 1 and column 2. Also, these random numbers should be divided by 5 with decimal 0 (e.g. 810 (not 811)).
The output matrix size should be 5*1.
I think the right function is randi, but I don't know how to form it.
  3 个评论
Zhan
Zhan 2017-5-21
Thank @the cyclist.
Yes, the entire in A always multiples of 10. For the second part of your question, also, Yes. For example for the first row, 810 and/or 40 can be included. Thanks!
Stephen23
Stephen23 2017-5-22
@Zhan: you keep asking questions, but you have not accepted any of the answers to any of your questions. Accepting answers shows which answer solved your question, and is also an easy way for you to say "thank you" for our volunteer effort helping you.

请先登录,再进行评论。

采纳的回答

the cyclist
the cyclist 2017-5-21
编辑:the cyclist 2017-5-21
Under the assumption that you want to include the endpoints, and that the elements of A are evenly divisible by 5:
A = [
810 840
840 870
870 900
900 930
930 960
];
nrows = size(A,1);
r = zeros(nrows,1);
for nr = 1:nrows
r(nr) = 5*randi(A(nr,:)/5);
end

更多回答(1 个)

Guillaume
Guillaume 2017-5-21
Simply loop over the rows:
result = zeros(size(A, 1), 1);
for row = 1:size(A, 1)
result(row) = randi(A(row));
end
I do not understand "these random numbers should be divided by 5 with decimal 0"
  3 个评论
Guillaume
Guillaume 2017-5-21
Oh! Well, in that case, simply divide the bounds by 5 and multiply the integer results by 5 afterward.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by