黑马程序员技术交流社区

标题: 随机数问题谁有不用集合的做法去重复 [打印本页]

作者: songchangchang    时间: 2016-10-13 19:41
标题: 随机数问题谁有不用集合的做法去重复
编写一个程序,获取10个1至20的随机数,要求随机数不能重复。


答案:
import java.util.ArrayList;
import java.util.Random;

public class RandomDemo {
        public static void main(String[] args) {
                // 创建产生随机数的对象
                Random r = new Random();

                // 创建一个存储随机数的集合。
                ArrayList<Integer> array = new ArrayList<Integer>();

                // 定义一个统计变量。从0开始。
                int count = 0;

                // 判断统计遍历是否小于10
                while (count < 10) {
                        //先产生一个随机数
                        int number = r.nextInt(20) + 1;
                       
                        //判断该随机数在集合中是否存在。
                        if(!array.contains(number)){
                                //如果不存在:就添加,统计变量++。
                                array.add(number);
                                count++;
                        }
                }
               
                //遍历集合
                for(Integer i : array){
                        System.out.println(i);
                }
        }
}

方法二:
import java.util.HashSet;
import java.util.Random;

public class HashSetDemo {
        public static void main(String[] args) {
                // 创建随机数对象
                Random r = new Random();

                // 创建一个Set集合
                HashSet<Integer> ts = new HashSet<Integer>();

                // 判断集合的长度是不是小于10
                while (ts.size() < 10) {
                        int num = r.nextInt(20) + 1;
                        ts.add(num);
                }

                // 遍历Set集合
                for (Integer i : ts) {
                        System.out.println(i);
                }
        }
}

作者: jinjinjin    时间: 2016-10-13 21:48
import java.util.Arrays;
import java.util.Random;

//获取10个1至20的随机数,要求随机数不能重复。
public class Test {
        public static void main(String[] args) {
                Random ran = new Random();
                int[] arr = new int[10];
                for (int i = 0; i < arr.length; i++) {
                        int num = ran.nextInt(20)+1;
                        if(!luckNum(arr,num)){
                                arr[i] =num;
                        }else{
                                i--;
                        }
                }
                System.out.println(Arrays.toString(arr));;
        }
       
        public static boolean luckNum(int[]arr,int lucknum ){
                boolean flag = false;
                for (int i = 0; i < arr.length; i++) {
                        if(arr[i]==lucknum){
                                flag =true;
                        }
                }
                return flag;
        }
}

我也Show Show

你们随便看看




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2