필터 지우기
필터 지우기

Randomising a vector with respect to the probability of the outcome

조회 수: 1 (최근 30일)
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
Mitchell Thurston
Mitchell Thurston 2021년 10월 13일
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

댓글을 달려면 로그인하십시오.

채택된 답변

Mohammad Alhashash
Mohammad Alhashash 2021년 10월 13일
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

추가 답변 (1개)

Matt J
Matt J 2021년 10월 13일
편집: Matt J 2021년 10월 13일
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

카테고리

Help CenterFile Exchange에서 Encryption / Cryptography에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by