How o generate random integer value?

1 Ansicht (letzte 30 Tage)
SM
SM am 15 Jul. 2020
Kommentiert: SM am 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?

Akzeptierte Antwort

John D'Errico
John D'Errico am 15 Jul. 2020
Bearbeitet: John D'Errico am 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 Kommentar
SM
SM am 16 Jul. 2020
First option is more suitable for my problem. Thank you John!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by