我需要生成1到n范围内的m个唯一随机数。目前,我已经实现的是:

round(rand(1,m)*(n-1)+1)

但是,一些数字在数组中重复。我怎样才能只获得唯一的号码?

最佳答案

您可以使用 randperm

根据描述:



因此,randperm(6,3)可能是向量

[4 2 5]

更新

randperm的两个参数版本仅出现在R2011b中,因此,如果您使用的是MATLAB的早期版本,则会看到该错误。在这种情况下,请使用:
A = randperm(n);
A = A(1:m);

10-06 01:02