如何在matlab中随机生成极限[m,n]中的所有数字?

How to generate all numbers randomly in the limit [m,n] in matlab?

如何在limit [m,n]中随机生成所有数字。要从 6 to 12.. 生成所有数字,即序列必须类似于 [7 12 11 9 8 10 6]

r = randi([6 12],1,7);

但这给出了结果:

[12  11  12   7   9  10  12] 

这里的数字是重复的,序列不包含 6 to 12.

中的所有数字

假设您使用均匀分布进行抽样。

r = datasample(6:12,7,'Replace',false)

简而言之,这会进行无放回的随机抽样,因此您可以随机顺序从原始总体中获取所有值。

您可以使用 randperm 生成 1 到 n 之间的随机数列表(其中 n 是向量的长度),并使用它来排列向量.

v=6:12;
n=length(v);
I=randperm(n);
v(I)