日期:2014-05-20 浏览次数:20747 次
import java.util.Random; /** * Created by IntelliJ IDEA. * User: gaoyong * Date: 2011-10-12 * Time: 22:54:09 * To change this template use File | Settings | File Templates. */ public class RandomArray { public static void main(String[] args) { int[] array=new int[10]; int i=0; while(i<10){ int temp= (int)(Math.random()*100); if(i==0){ array[i]=temp; i++; } if(i>0){ if(hasExisteted(array,i,temp)) continue; else{ array[i]=temp; i++; } } } for(int o:array){ System.out.print(o+","); } } private static boolean hasExisteted(int[] ary,int cap,int value){ boolean result=false; for(int i=0;i<cap&&i<ary.length;i++){ if(ary[i]==value) return true; } return result; } }
------解决方案--------------------
如果不使用集合,为了提高效率,仿照下面的写法
import java.util.Arrays; public class ProduceRandom { public static int MIN = 100; public static int MAX = 200;//不包含MAX public static int SUM = 10;//总共10个随机数 public static void main(String[] args) throws InterruptedException { Integer[] intArray = new Integer[SUM]; for (int counter = 0; counter < 10; counter++) { //记录已经产生的随机数个数 Integer temp = (int) (Math.random() * (MAX - MIN)) + MIN;//假设只产生整数,不产生浮点数等其他类型的数 int index = temp % SUM;//因为没有使用集合,为了提高匹配效率,仿真哈希算法,简单的产生下标 while (intArray[index] != null) { if (intArray[index] == temp) break;//值相同时也复制到那个堆内存,相当于什么都没做 index = (index + 1) % SUM; } intArray[index] = temp; } System.out.println(Arrays.toString(intArray)); } }
------解决方案--------------------
//如果不使用集合,请仿照下面的写法 public class ProduceRandom { public static void main(String[] args) { Integer[] intArray = getRandomArray(100, 200, 10); for (Integer i : intArray) { System.out.print(i + " "); } } /** * @param MIN:下界 * @param MAX:上界 * @param SUM:总个数 * @return:不同整数的整型数组 */ public static Integer[] getRandomArray(final int MIN, final int MAX, final int SUM) { Integer[] intArray = new Integer[SUM]; for (int counter = 0; counter < 10; counter++) { // 记录已经产生的随机数个数 Integer temp = (int) (Math.random() * (MAX - MIN)) + MIN;// 假设只产生整数,不产生浮点数等其他类型的数 int index = temp % SUM;// 因为没有使用集合,为了提高匹配效率,仿真哈希算法,简单的产生下标 while (intArray[index] != null) { if (intArray[index] == temp) break;// 值相同时也复制到那个堆内存,相当于什么都没做 index = (index + 1) % SUM; } intArray[index] = temp; } return intArray; } }