从一个长度为n的数组中随机选择m个数
2015-04-26 15:18
155 查看
基本思想:
首先在下标0---n之间随机生成一个下标,将这个下标对应的数和数组的第一个数交换位置;然后从小标1----n之间随机生成一个数,将下标对应的
数和数组的第二个数交换位置。依次这样下去,知道找出m个数。public class RandomM {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr=new int[10];
for(int i=0;i<10;i++){
arr[i]=i;
}
for(int n: selectM(arr, 5)){
System.out.println(n);
}
}
//从长度为n的数组中随机的选择m个整数
public static int[] selectM(int[] arr,int m){
int len=arr.length;
if(m>arr.length)
throw new RuntimeException("xxxxx");
int[] res=new int[m];
for(int i=0;i<m;i++){
int randomIndex=len-1-new Random().nextInt(len-i);
res[i]=arr[randomIndex];
int tmp=arr[randomIndex];
arr[randomIndex]=arr[i];
arr[i]=tmp;
}
return res;
}
}
首先在下标0---n之间随机生成一个下标,将这个下标对应的数和数组的第一个数交换位置;然后从小标1----n之间随机生成一个数,将下标对应的
数和数组的第二个数交换位置。依次这样下去,知道找出m个数。public class RandomM {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr=new int[10];
for(int i=0;i<10;i++){
arr[i]=i;
}
for(int n: selectM(arr, 5)){
System.out.println(n);
}
}
//从长度为n的数组中随机的选择m个整数
public static int[] selectM(int[] arr,int m){
int len=arr.length;
if(m>arr.length)
throw new RuntimeException("xxxxx");
int[] res=new int[m];
for(int i=0;i<m;i++){
int randomIndex=len-1-new Random().nextInt(len-i);
res[i]=arr[randomIndex];
int tmp=arr[randomIndex];
arr[randomIndex]=arr[i];
arr[i]=tmp;
}
return res;
}
}
相关文章推荐
- Java算法 从一个数组中随机选择一部分数
- Java算法 从一个数组中随机选择一部分数
- 随机从长度未知的数组中抽取数字,且保证每个元素被抽到的概率相同
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
- php从数组中随机选择一个或多个的方法
- 用c# 产生一个 int 数组 长度为100,并向其中随机插入 1-100 ,并且不能重复
- php将字符串随机分割成不同长度数组的方法
- 如何从数组中随机选择任意个元素
- 【转载】从长度为n的数组中选择m个数的所有结果
- 通过js从一个数组中随机的取出一个值
- C# 向长度为100数组内随机插入1-100,不能重复。
- 有一个大数组,var a = ['1', '2', '3', ...];a的长度是100,内容填充随机整数的字符串.请先构造此数组a,然后设计一个算法将其内容去重
- 在java中怎么样从一个集合中截取一定长度的元素放到一个新集合中,不是数组哦!。
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
- 【算法30】从数组中选择k组长度为m的子数组,要求其和最小
- 阿里巴巴面试算法题:有一个函数int getNum(),每运行一次可以从一个数组V[N]里面取出一个数,N未知,当数取完的时候,函数返回NULL。现在要求写一个函数int get(),这个函数运行一次可以从V[N]里随机取出一个数,而这个数必须是符合1/N
- java 随机长度10位数组,输入两个数字,找出差值最小的
- 从一个长度为n的数组中找出前k个最小值的最优实现
- js实现生成一个指定长度为n且随机不重复的数组
- java 一个int数组 长度为100 随机生成100个数 即1-100 将其插入进数组 插入的数字不能重复