日期:2014-05-20 浏览次数:20925 次
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;
}
}