Filter löschen
Filter löschen

Randomising a vector with respect to the probability of the outcome

1 Ansicht (letzte 30 Tage)
Hi, I have 60 trials which have two outcomes 0 and 1 with probabilities of 80% and 20%.
I want to randomise this 60x1 matrix in such a way that every 5 iterations, outcome 0 occurs 4 times and outcome 1 occurs once as they should.
I tried using ransrc but the 5x1 matrices that I get as an outcome very rarely match the desired probabilites.
  2 Kommentare
Mitchell Thurston
Mitchell Thurston am 13 Okt. 2021
This isn't a general case, but if I understand what you're wanting to do this'll do the job
result = zeros(60,1);
for i = 0:5:55
result(i + randi(5)) = 1;
end

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Mohammad Alhashash
Mohammad Alhashash am 13 Okt. 2021
You can use the randperm function to build 12 basic 5-by-1 matrices and then map the values into 0 and 1 based one your probabilities.
Here what do I mean:
A = [];
m = 60; %length of the main matrix A
for i=1:5:m
a = randperm(5)';
a(a~=1) = 0; % this based on your probability, I used 20% 1 and 80% 0
A = [A;a];
end

Weitere Antworten (1)

Matt J
Matt J am 13 Okt. 2021
Bearbeitet: Matt J am 13 Okt. 2021
I=randi(5,1,12);
J=1:12;
result=reshape( sparse(I,J,1,5,12) ,[],1);
full(result(:))
ans = 60×1
0 0 1 0 0 1 0 0 0 0

Kategorien

Mehr zu Encryption / Cryptography 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