MATLAB如何把n个数不重复地随机分为m组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB如何把n个数不重复地随机分为m组相关的知识,希望对你有一定的参考价值。

RT 例如a =[1:100] 想把a近似随机地分为10组,但是不能重复取数,应该怎么操作? 谢谢

用crossvalind函数。具体用法看帮助文档。
Indices =crossvalind('Kfold', length(a), 10);追问

不是啊,您这个的运行结果是这样的,不是1:100的随机分组

追答

您觉得这些个结果是什么呢 不就是分组的编号么。 第13个数分到第3组,以此类推。。

追问

原来是这个意思,谢谢

参考技术A >> A = randperm(100);
R = reshape(A,10,10)
R =
23 84 87 66 77 69 63 70 62 19 91 14 86 21 32 53 65 89 44 92 30 49 28 74 6 76 95 13 40 61 7 50 96 56 34 73 39 31 72 17 41 26 67 43 97 100 42 5 36 12 20 29 94 15 3 59 51 11 58 33 98 93 52 18 60 27 78 80 57 16 90 38 48 35 45 2 55 22 88 81 24 25 71 47 82 10 75 64 83 85 54 1 68 9 37 79 46 8 4 99

matlab 哪个函数可以从一组数据中随机抽取一部分出来

假设你原来的数据存在变量a中

如果,你想从a中随机抽取固定N个数
c=randperm(numel(a));
b=a(c(1:N));
b就是从a中随机抽取的N个数(N应该小于a中元素的总个数)

 

numel(a)获得原来a中元素的个数 c=randperm(numel(a)); 得到一个由1到numel(a))个自然数组成的随机乱序数列 加入a中有100个元素,那么运行完c=randperm(numel(a));之后 c就是一个由1到100的自然数组成的数组,但是顺序是随机打乱的 c(1:N)取c的前N个数 假设N=20,那么 c(1:N)就是c数列中前20个数 b=a(c(1:N)); 就是从原来的数组a中根据c(1:N)提取数据存到b中 因为c(1:N)有20个数,所以最终b会有20个数 但是由于c中的20个数是1到100中其中随机的20个数 所以b中的20个数,就是从a中的随机抽取的20个数

以上是关于MATLAB如何把n个数不重复地随机分为m组的主要内容,如果未能解决你的问题,请参考以下文章

js获取一组不重复的随机数的方法

matlab 随机分组,谢谢

随机生成一组不重复的随机数组

论 Java 中获取一组不重复的随机数之性能问题

java 产生一组不重复随机数

.net 下用C#产生一个永不重复10位随机数