gme*_*oni 2 random matlab matrix
有替代品randi,我需要唯一的整数值.使用randi该PianoSperimentale矩阵可包含重复整数值.
lover_bound = 10;
upper_bound = 180;
steps = 10;
NumeroCestelli = 8;
livello = [lover_bound:steps:upper_bound];
L = length(livello);
n_c = 500 000
NumeroCestelli = 8
randIdxs = randi([1,L],n_c,NumeroCestelli);
PianoSperimentale = single(livello(randIdxs));
Run Code Online (Sandbox Code Playgroud)
替代方案需要快速并支持非常大的矩阵.在过去我使用这个:
[PianoSperimentale] = combinator(L,NumeroCestelli,'c','r');
for i=1:L
PianoSperimentale(PianoSperimentale==i)=livello(i);
end
Run Code Online (Sandbox Code Playgroud)
但是太慢而痛苦.(见组合者)
就在这里:
randsample(10,3)
Run Code Online (Sandbox Code Playgroud)
给出一个从1到10的3个整数的向量,没有替换.
如果你需要一个矩阵而不是一个向量:
matrix = NaN(8,12);
matrix(:) = randsample(1000,numel(matrix));
Run Code Online (Sandbox Code Playgroud)
给出一个8x12的独特整数矩阵,取1到1000.
该功能randsample位于统计工具箱中.如果您没有它,您可以使用randperm@RodyOldenhuis和@Dan(请参阅@ Dan的答案).