我需要生成范围为1到n的m个唯一随机数.目前我实施的是:
round(rand(1,m)*(n-1)+1)
Run Code Online (Sandbox Code Playgroud)
但是,阵列中会重复一些数字.我怎样才能得到唯一的数字?
Ste*_*fin 13
你可以用randperm.
从描述:
p = randperm(n,k)返回一个行向量,包含从1到n(包括1和n)随机选择的k个唯一整数.
因此,randperm(6,3)
可能是向量
[4 2 5]
Run Code Online (Sandbox Code Playgroud)
randperm的两个参数版本仅出现在R2011b中,因此如果您使用的是早期版本的MATLAB,那么您将看到该错误.在这种情况下,使用:
A = randperm(n);
A = A(1:m);
Run Code Online (Sandbox Code Playgroud)
如上所述,在早于R2011b的Matlab版本中,randperm只接受一个输入参数.在这种情况下,假设您拥有Statistics Toolbx,最简单的方法是使用randsample:
randsample(n,m)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6225 次 |
| 最近记录: |