How o generate random integer value?

2 views (last 30 days)
SM
SM on 15 Jul 2020
Commented: SM on 16 Jul 2020
Example:
I have used
A=randi([1 10],1,12)
output:
A=[ 1 9 1 6 7 8 3 7 9 7 8 5]
Is it possible to generate random integer values in interval [1 10], excluding 3, 6 and 8 from the interval having said that the size of the array 1 by 12 remains same?

Accepted Answer

John D'Errico
John D'Errico on 15 Jul 2020
Edited: John D'Errico on 15 Jul 2020
You want to allow the numbers [1 2 4 5 7 9 10]. So just generate a random integer from 1 to 7. Then use that vector to index the allowed set.
allowed = [1 2 4 5 7 9 10];
A = allowed(randi(7,[1,12]));
If you have some more difficult set to allow, then use setdiff.
allowed = setdiff(1:10,[3 6 8]);
  1 Comment
SM
SM on 16 Jul 2020
First option is more suitable for my problem. Thank you John!

Sign in to comment.

More Answers (1)

madhan ravi
madhan ravi on 15 Jul 2020
a = 1:10;
No_vals = [3, 6, 8];
A = setdiff(a, No_vals);
Wanted = A(randi(numel(A), [1, 12]))
  1 Comment
SM
SM on 16 Jul 2020
Thank you Ravi....Your solution is more comprehensive and easy to understand.

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by