说明
版权所有,仿冒必究
转载时请标明出处,尊重他人劳动成果,谢谢
此算法是我个人研究的,经过测试证明我的算法还是不错的。
PS:这里的时间可能有点偏小,实际用时是2秒左右,我没有去研究原因了。算法实现的功能
从一个群体(大小为N的数组)中随机抽取一定数量(M个)的样本
即
从一个大小为N的int数组中随机抽取M个不重复的元素放到一个新数组中算法的设计思想
首先需要准备要被抽样的数组num1和存放抽样结果的数组num2
然后在M次循环中每次随机抽取一个数存入num2中
如果,每次从1到N这N个数中随机抽取一个整数作为被抽取的位置的话,那
么可能会抽取到重复的数字,因此我这里需要产生的随机数应该是原数组去掉已经被抽取的位置之后的位置,你可能会想到每次抽取一个数,就将这个数从原数组里面去掉,然后再用剩下的元素重新组成数组,但是这样的话效率会很低,我
的想法是用一个list保存每次抽取的位置,由于每次抽取之后剩余的可抽取的数量都会减1,所以产生随机数的范围应当是N减去已经抽取的次数,这样产生