例如,如何隨機生成包含8個0
s和4個1
s的1乘12矩陣?如何在Matlab中隨機生成n 0s和m 1s的矩陣?
喜歡這個矩陣[1 0 0 1 0 0 0 1 0 0 1 0]
如果我再次生成,它返回一個不同的矩陣[0 0 1 0 0 1 1 0 1 0 0 0]
例如,如何隨機生成包含8個0
s和4個1
s的1乘12矩陣?如何在Matlab中隨機生成n 0s和m 1s的矩陣?
喜歡這個矩陣[1 0 0 1 0 0 0 1 0 0 1 0]
如果我再次生成,它返回一個不同的矩陣[0 0 1 0 0 1 1 0 1 0 0 0]
創建與1
秒,然後通過0
S中的所需數量和所需數量開始矢量使用randperm
周圍將它洗:
n = 8;
m = 4;
M = [ones(m,1), zeros(n,1)];
M = M(randperm(numel(M)))
或者你也可以做到這一點略有不同:http://www.mathworks.com/matlabcentral/answers/83289-how-can-i-create-a-random-binary-matrix-with-a-specified-number-of-1-s-and-0-s
非常感謝:) – Caceros
可以創建包含12個零向量,並使用randsample
挑四個數字,你讓一個:
a = zeros(1,12);
a(randsample(12,4)) = 1;
注:這需要「Statistics and Machine Learning Toolbox」。 如果你沒有這個,你將無法使用randsample
。
謝謝,這是有幫助的:) – Caceros
這個也可以。
x = zeros(12,1);
tmp = rand(12,1);
[~,ind] = sort(tmp);
x(ind(1:4)) = 1;
不知道是否比其他例子更好,但它是做一個方式。我會說這是一個類似於fhdrsdg的解決方案,但是這個不需要統計工具箱。也可能這種解決方案可能不像matlabs解決方案可能具有的那樣高雅,儘管和randsample
具有比這個示例更多的特徵。
你的意思是4個月零8個月還是8個月零4個月?因爲你說前者,但舉例說後者。 – fhdrsdg
對不起,我犯了這個愚蠢的錯誤......我真的沒關係。 – Caceros
沒問題,謝謝糾正 – fhdrsdg