从一个数组中随机产生多个不重复数据的方法

此算法来源与网上,纯属个人心得!!!

在一个已知的集合中,随机取出多个(小于集合长度)不重复的数据:

List<Integer> list = new ArrayList<Integer>();
List<Integer> output = new ArrayList<Integer>();
//产生一个长度为一千的集合
for (int i = 1; i < 1000; i++) {
list.add(i);
}
Random random = new Random();
int end = list.size() - 1;
//随机取出10个不同值的数据
for (int i = 0; i < 10; i++) {
int num = random.nextInt(end + 1);
output.add(list.get(num));
list.set(num, list.get(end));
end--;
}
System.out.println(list)

此算法有点在于只要一个循环,不用反复去查询集合
时间: 2024-10-18 19:08:15

从一个数组中随机产生多个不重复数据的方法的相关文章

从一个数组中随机取出一定数量元素组成新数组

/** * 从一个数组中随机取出一定数量元素组成新数组 * @param array 一个String类型的数组 * @param number需要取出元素的数量 * @return 一个随机的数组 * @throws NullPointerException原数组不能为空 *@throws ArrayIndexOutOfBoundsException新数组长度应不大于原数组的长度 */ public static String[]  getRandomArray(String[] array,

JS案例之8——从一个数组中随机取数

近期项目中遇到一个需求,从一个列表中随机展示列表的部分内容,需求不大,JS也非常容易实现.主要是运用到了Math对象的random方法,和Array的splice方法. 思路是先新建一个数组,存放所有的列表,然后算出随机数,从数组中取出这个随机索引对应的值,然后组成一个随机数组. 源代码如下: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" Conten

从一个数组中随机的取出若干个不同的数

/* * 此程序是从一个不重复的数组中随机的取出若干个不同的元素 * 难点是防止在取数的时候出现已经取到过的情况(特别是取到最后),需要尽可能的降低碰撞 */ //第一种算法,CSDN上别人的想法 /* $num = 0; $array = array(1, 2, 3, 4, 5, 6, 7, 8, 9); $arr = array(); $g = 5; $tag = true; while ($tag) { $count = count($array); $t = rand(0, 1); if

JS 在指定数组中随机取出N个不重复的数据

/**思路:每次随机从数组抽出一个数放进新的数组,然后将这个数从原数组中剔除,这个就不会抽到重复的数了*/function makeRandomArr(arrList,num){ if(num>arrList.length){ return; } // var tempArr=arrList.concat(); var tempArr=arrList.slice(0); var newArrList=[]; for(var i=0;i<num;i++){ var random=Math.flo

js从数组中随机获取n个不重复的数据

做云课堂的作业时遇到一要求,实现刷新页面时显示不同数据,(数组中20个据,页面加载10个).思路就是从0-19中随机生成10个不同的数,让数组取下标输出数据. 下面是在num的范围内生成n个不重复的数.例如从10以内随机生成5个不同的数randomNum(10,5); function randomNum(num,n) { if(typeof num!=="number"||typeof n!=="number") return false; //对象检测 var

在数组中随机插入数字且不重复

产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复.(两种方法) 1, List<int> myList = new List<int>(); Random ran = new Random(); while (myList.Count<100) { int num = ran.Next(1, 101); if (!myList.Contains(num)) { myList.Add(num); } } foreach (int item in myL

从数组中随机抽取一个值,(别人问我,我自己想到的一个方法)

今天本来在群里瞎扯淡的,突然看到有人问一个问题,大概意思是:怎么样从一个数组中随机抽取一个元素.当时我想到了PHP中有一个内置函数是打乱数组的顺序的.我就想用这个函数打乱一下,然后就抽取第一个元素. 代码如下: $array = array( 'das'=>array('id'=>1,'name'=>'于杭'), 'dasss'=>array('id'=>2,'name'=>'张三'), 'dass'=>array('id'=>3,'name'=>'李

JS从数组中随机取出几个数组元素的方法

原文链接:http://caibaojian.com/js-get-random-elements-from-array.html js如何从一个数组中随机取出一个元素或者几个元素. 假如数组为· var items = ['1','2','4','5','6','7','8','9','10']; 1.从数组items中随机取出一个元素 var item = items[Math.floor(Math.random()*items.length)]; 2.从前面的一篇随机数组中随机取几个元素

array_rand() 从数组中随机取出一个或多个单元

array_rand() - 从数组中随机取出一个或多个单元 mixed array_rand ( array $input [, int $num_req = 1 ] ) 从数组中取出一个或多个随机的单元,并返回随机条目的一个或多个键. 参数 input: 输入的数组.必需.规定数组. num_req: 指明了你想取出多少个单元.可选.规定返回多少随机键名.如果指定的数目超过了数组里的数量将会产生一个 E_WARNING 级别的错误. 例子 1 从数组返回一个随机键: <?php $a=arr