如何在若干数组中随机不重复的数值,数组重复数值
给大家出一道题,在DataTable中存储了这样一张表:
数组序号 数组值
1 1,2,3,4,6,10,12
2 1,4,5
3 3,4,5,6,7,11
现在要从1,2,3数组中随机抽取不重复的数值,要求每个数组中抽取3个,要确保尽可能每个数组中都能
抽取到3个,且所有抽取出的数值不重复,并且抽取到的数值个数尽可能的多,请大家设计算法。
这个是示例数据,题目本意是,在每个数组中任意存储了一堆不重复的数值,然后从每个数组中随机抽
取不重复的数值,每个数组抽取N个,要尽可能每个数组中都能抽取到N个,且所有抽取出的数值不重复
,而且要求抽取出的数值个数尽可能的多。(要考虑到的问题是:1.有些数组中存储的数值个数可能小
于等于N;2.不同的数组存储的数值可能有重复)
全国最大的免费电子书下载基地http://www.52eshu.com
解决方案
这个问题根本的问题是,如何生成N个随机数。并且N个随机数小于<=N,且都不相等。
这个实现并不困难。
根据生成的这个随机数在给出的数组内(要将表的记录转换成数组)取数,如果数组内个数不够就取最大个数。
然后将取出来的数字排重
就可以得到最终结果了。
用户评论