Randomise vector numbers to maximum variance
    2 ビュー (過去 30 日間)
  
       古いコメントを表示
    
I have a vector that contains numbers 1, 0 and 10. In partcular, I have 100 times the 1, 400 times the 0 and 20 times the 10.
Is there any function or any way to shuffle the numbers to the maximum variance regarding their repetition? Namely, I want to shuffle them in a way to minimise their sequential repeatibility, so a to achive the low number of times that I get 1,1 or 0,0 or 10,10 in my vector?
Thank you so much in advance!
4 件のコメント
採用された回答
  Bruno Luong
      
      
 2022 年 9 月 9 日
        A = repmat([10 repmat([repmat(0, 1, 2), 1 repmat(0, 1, 2)], 1, 5)], 1, 20);
10 件のコメント
  Bruno Luong
      
      
 2022 年 9 月 9 日
				This is a method for generic case
v=[0 1 10];
n=[400 100 20];
A = shuffle(v, n)
function A = shuffle(v, n)
[m,i] = maxk(n,2);
mm = min(m);
if mm > 0
    n(i) = n(i)-mm;
    A = [repmat(v(i), 1, mm), shuffle(v, n)];
else
    [mm,j] = max(m);
    A = repmat(v(i(j)), 1, mm);
end
end
その他の回答 (0 件)
参考
カテゴリ
				Help Center および File Exchange で Descriptive Statistics and Visualization についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


