随机唯一整数值

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)

但是太慢而痛苦.(见组合者)

Lui*_*ndo 5

就在这里:

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的答案).

  • +1,虽然请注意这是统计工具箱的一部分. (2认同)