黑马程序员技术交流社区

标题: 随机生成20个1——100的随机数,不重复。 [打印本页]

作者: Julie    时间: 2015-2-9 23:22
标题: 随机生成20个1——100的随机数,不重复。
今天捯饬了半天,也没怎成的一道题。
我的源代码是:
import java.util.Random;

public class Demo {
        public static void main(String[] args) {
                int[] arr = new int[20];
                Random rd = new Random();
               
                for (int i = 0; i < arr.length; i++) {
                        int m = rd.nextInt(100)+1;
                        if(i==0){arr[0] = m;}
                        loop:
                                for (int j = 0; j < arr.length-1; j++) {
                                if(m!=arr[j]){arr[i] = m;}
                                else {continue loop;}
                        }
                        System.out.print(arr[i]+" ");
                }
        }
}
但是这个运行还是会有重复的数字,真是气死人了……求大神指导!
作者: play1369    时间: 2015-2-9 23:48
本帖最后由 play1369 于 2015-2-9 23:55 编辑

          for (int i = 0; i < arr.length; i++) {
                        arr = rd.nextInt(100)+1;
                    for (int j = 0; j < i; j++) {
                                if(i==0){continue;}
                              else
{
if(arr==arr[j])
{
i--;
break;
}
}
                        }


作者: play1369    时间: 2015-2-9 23:51
不过最好用Set集合做,循环条件是size()小于20
作者: ziyu0971    时间: 2015-2-10 12:33
这是入学考试题吧,应该使用Random生成随机数,把随机数存到不能重复元素的set集合中就可以了哦。
作者: 鲍阳    时间: 2015-2-15 10:26
mark一下,以后再看
作者: qiuyuhuaihua    时间: 2015-2-15 12:25
首先生成一个有序的1到100的数组array,然后从下标0开始遍历数组,设当前下标为i,每次遍历时生成一个0到99的整数,假设以randIndex来代替,将array[i] 和array[randIndex]的值交换。这样总共要进行一百次生成随机整数以及交换,最后在这个数组中任取20个数字就可以了(随意你怎么取,连续的,不连续的,只要你保证下标不重复就行,一定别用随机数Random了)。
作者: chensc    时间: 2015-2-17 16:52
学习学习!




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