package org.jcommons.common; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; public class RandomUtils { public static List<Double> random(double min,double max,int n){ List<Double> ret = new ArrayList<Double>(); double delta=max-min; double r,rand; for(int i=0; i<n; i++){ r=Math.random()*delta; rand=r+min; ret.add(rand); } return ret; } public static List<Integer> random(int min,int max,int n){ List<Integer> ret = new ArrayList<Integer>(); int delta=max-min; int r,rand; for(int i=0; i<n; i++){ r=(int) (Math.random()*delta); rand=r+min; ret.add(rand); } return ret; } public static Set<Integer> randomDiff(int min,int max,int n){ Set<Integer> ret = new HashSet<Integer>(); int delta=max-min; int r,rand; while(ret.size()<n){ r=(int) (Math.random()*delta); rand=r+min; ret.add(rand); } return ret; } public static Set<Integer> randomDiff(int min,int max,int n,Set<Integer> excluded){ Set<Integer> ret = new HashSet<Integer>(); int delta=max-min; int r,rand; while(ret.size()<n){ r=(int) (Math.random()*delta); rand=r+min; if(!excluded.contains(rand)) ret.add(rand); } return ret; } public static <T> List<T> randomSelect(List<T> list,int cnt){ if(list==null) return null; if(cnt>=list.size() || list.size()==0) return list; List<T> ret = new ArrayList<T>(); Set<Integer> set = randomDiff(0, list.size(), cnt); for(Integer index : set){ ret.add(list.get(index)); } return ret; //List<Double> randomList = random(0, , n) } public static <T> List<T> randomSelect(List<T> list,double ratio){ if(list==null) return null; int cnt = (int) (list.size()*ratio); if(cnt>=list.size() || list.size()==0) return list; List<T> ret = new ArrayList<T>(); Set<Integer> set = randomDiff(0, list.size(), cnt); for(Integer index : set){ ret.add(list.get(index)); } return ret; //List<Double> randomList = random(0, , n) } public static <T> Collection<T> randomSelect(Collection<T> set,int cnt){ List<T> list = new ArrayList<T>(set); return randomSelect(list, cnt); //List<Double> randomList = random(0, , n) } public static <T> List<T> randomSelect(Collection<T> set,double ratio){ List<T> list = new ArrayList<T>(set); return randomSelect(list, ratio); //List<Double> randomList = random(0, , n) } public static double next(double min,double max){ double delta=max-min; double r,rand; r=Math.random()*delta; rand=r+min; return rand; } public static int next(int min,int max){ double delta=max-min; int r,rand; r=(int) (Math.random()*delta); rand=r+min; return rand; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub for(int i=0; i<100; i++) System.out.println(next(0, 100)); } }