Random.nexInt 的方法想必也是十分常见的。
做项目的时候涉及到了一个需求随机在一堆数据中抽取固定几个进行展示。最初用的是百度来的查询一个,成功则保存,若重复则替代,挨个比对。后来嫌比对比有可能在大数据时较耗时。干脆自己写了个小工具。
//获取一个用list展现的随机数的方法
/**
*
* @param datas
* 目标数列
* @param num
* 所需要的数列大小
* @return
*/
public static ArrayList<Integer> getRandomList(ArrayList<Integer> datas , int num)
{
Random random = new Random();
ArrayList<Integer> resultDatas = new ArrayList<Integer>();
for(int i = 0 ; i < num ; i++)
{
int data = Math.abs(random.nextInt()%datas.size());
resultDatas.add(datas.get(data));
datas.remove(datas.get(data));
}
return resultDatas;
}
基本没什么好说明的地方。
功能是输入一个指定的整数数列,从中随机抽取num个,输出。
使用for循环,随机抽取之后再从指定数列中移除,再次随机抽取,以此不断抽取num个随机数。
主函数代码:
ArrayList<Integer> arrayList = RandomUtil.getRandomList(10,8);
Log.i("msg" , arrayList.toString());
输出效果:
12-08 12:55:07.400 1224-1224/com.example.think.lancher I/msg﹕ [5, 7, 4, 9, 2, 1, 0, 3]