黑马程序员技术交流社区

标题: 怎样随机输出一个数组里面其中的五个数,且五个数字都不相同 [打印本页]

作者: h782205380    时间: 2015-6-4 18:22
标题: 怎样随机输出一个数组里面其中的五个数,且五个数字都不相同
怎样随机输出一个数组里面其中的五个数,且五个数字都不相同。
作者: 2666fff    时间: 2015-6-4 19:12
没看懂你说的啥意思,但是你要是想要不重复的数字,你可以将这个5个数加入set,保证非重复性,然后,判断set长度是否达到5,如果不到五,继续输出,直到到5,就能保证5个不重复的数
作者: xfliyy    时间: 2015-6-4 20:33
你可以随机生成一个角标  再输出
作者: xfliyy    时间: 2015-6-4 20:59
package cn.itcast_1;

import java.util.TreeSet;

public class Demo {
        public static void main(String[] args) {
                int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
                TreeSet<Integer> ts = new TreeSet<Integer>();
                while (ts.size() < 5) {
                        int i = (int) (Math.random() * 10);
                        if (i < arr.length) {
                                ts.add(arr[i]);
                        }
                }
                System.out.println(ts);

        }
}
试试看行不行
要取出来的话遍历集合就好了
作者: xfliyy    时间: 2015-6-4 21:07
package cn.itcast_1;

import java.util.Random;
import java.util.TreeSet;

public class Demo {
        public static void main(String[] args) {
                int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
                TreeSet<Integer> ts = new TreeSet<Integer>();
                Random r = new Random();
                while (ts.size() < 5) {
                        //随机生成一个介于0到数组长度之间的角标
                        int i = r.nextInt(arr.length);
                        ts.add(arr[i]);
                }
                System.out.println(ts);

        }
}
感觉这样比较好..
作者: TOBESKY    时间: 2015-6-4 21:46
这是你随便相处类的么楼主
作者: h782205380    时间: 2015-6-5 23:32
xfliyy 发表于 2015-6-4 21:07
package cn.itcast_1;

import java.util.Random;

谢谢,问题已解决, 还没学这个TreeSet<Integer>,所以不懂是什么
作者: 少年闰土    时间: 2015-6-6 10:00
说一个我的笨办法,生成随机数,如果与以前的重复则舍弃重新生成,这样就可以
作者: xfliyy    时间: 2015-6-6 21:34
h782205380 发表于 2015-6-5 23:32
谢谢,问题已解决, 还没学这个TreeSet,所以不懂是什么

:lol  那你怎么解决的
作者: 疯狂的大猫    时间: 2015-6-6 21:39
class MathDemo
{
        public static void main(String[] args)
        {
                Random r = new Random();
               
                for (int x=0;x<10 ;x++ )
                {
                        //int d4 = (int)(Math.random()*6+1);
                        int d5 = r.next(5)+1;
                        sop("d5="+d5);
                }
        }
       
作者: 路途遥远    时间: 2015-6-6 21:44
楼主怎么解决 的  可以分享吗




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