2012年11月2日
摘要: 产生不同的随机数,转化一下更类似于随机取样的问题,从N个不重复的数中,取出m个数。 1、使用java的Set集合,Set保证新增的元素不能与集合中已有的元素重复;LinkedHashSet、TreeSet都能实现,后者集合里的元素按升序排列; 2、用数组保存N个值,然后打乱数组,取前m个数; 3、Knuth算法,主要思想是从r个剩余的整数中选出s个,以概率s/r选择下一个数, rand()%remaining<select,当条件符合时,select自减1,而remaining是不断减小的。当remaining==select时,不等式必然成立,肯定会选择一个数;而当select变为.. 阅读全文
posted @ 2012-11-02 11:01 CodeAnt 阅读(997) 评论(0) 推荐(0) 编辑