choose 2 random unique element inside cell
13 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
NA
el 23 de Feb. de 2019
Comentada: Jos (10584)
el 25 de Feb. de 2019
how to choose 2 random unique element inside a cell?
index={[1,2,5,9,10,13,17,18,21],[4,5,7,12,13,15,18,20,21],[3,4,6,11,12,14,18,19,20],[8,16,20,22]};
example of result
p={[1,9],[7,21],[3,4],[16,8]}
0 comentarios
Respuesta aceptada
per isakson
el 23 de Feb. de 2019
Editada: per isakson
el 23 de Feb. de 2019
and try
>> cellfun( @(row) datasample( row, 2, 'replace',false ), index, 'uni',false )
ans =
1×4 cell array
{1×2 double} {1×2 double} {1×2 double} {1×2 double}
"[...] random unique element inside a cell" does that mean without replacement?
If it means literal "unique elements" then run this is a first step to remove duplicates.
>> index = cellfun( @unique, index, 'uni',false )
ix =
1×4 cell array
{1×9 double} {1×9 double} {1×9 double} {1×4 double}
Or should the propability to pick a specific value be proportional to the number of duplicates of that value?
8 comentarios
per isakson
el 24 de Feb. de 2019
"amount is calculated by adding normrnd" That means that you need to be careful regarding Accuracy of Floating-Point Data
So far, I have assumed whole numbers
Más respuestas (1)
Jos (10584)
el 23 de Feb. de 2019
If I understand you correctly, the final output should have 8 unique numbers, in four groups of two, where the numbers in each group is drawn from a cell in the cell array index. This is not a trivial problem to answer! There might situations where this is simply impossible given a cell array index (for instance index= {[1 2 3], [1 2 4], [2 3 4],... }
You might want to try a brute-force method
index={[1,2,5,9,10,13,17,18,21],[4,5,7,12,13,15,18,20,21],[3,4,6,11,12,14,18,19,20],[8,16,20,22]};
fn = @(v) sort(v(randperm(numel(v),2))) ; % function to draw 2 randomelements from v
k = 1 ;
while k < 1e5 % try a lot of times
C = cellfun(fn, index,'un',0) ;
if numel(unique([C{:}])) == 8,
break
else
C = [] ; k = k+1 ;
end
end
celldisp(C)
1 comentario
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!