A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

随机生成1-10之间5个随机数,但不能有重复的,并将结果打印到控制台,求大神给一点思路!

13 个回复

倒序浏览
public class Test {
        public static void main(String[] args) {
                int[] arr=new int[10];
                arr[0]=(int)(Math.random()*(10))+1;
                a:for(int i=1;i<=arr.length/2;i++){
                        outer:while(true){
                                int a=(int)(Math.random()*(10))+1;
                                for(int x=0;x<i;x++){
                                        if(a==arr[x]){
                                                continue outer;
                                        }
                                }
                                arr[i]=a;
                                continue a;
                        }
                }
                for(int i=0;i<arr.length/2;i++){
                        System.out.println(arr[i]);
                }
        }
}
回复 使用道具 举报
加油!加油!加油!加油!
回复 使用道具 举报
695212308 发表于 2016-8-21 10:37
public class Test {
        public static void main(String[] args) {
                int[] arr=new int[10];

用HashSet更简单啊
回复 使用道具 举报
public static void main(String[] args){
                                Random ra = new Random();
                                int a [] = new int [10] ;
                                //每产生一个随机数都和之前产生的去比对
                                //若重复则不赋值
                                aa:
                                for(int i =0 ;i<9;i++){
                                        a[i] =ra.nextInt(10)+1;
                                        for(int j = 0; j<i;j++){
                                                if(a[i]==a[j]){    // 产生的数a[i] 跟0到i索引 去比较
                                                        i--;        //若有相等的 则 本次赋值无效 重新赋值
                                                continue aa;
                                                }
                                        }       
                                }
                                System.out.print(Arrays.toString(a));//输出数组 a 的值
                }
回复 使用道具 举报
[AppleScript] 纯文本查看 复制代码
	public static void main(String[] args) {
		HashSet<Integer> hs = new HashSet<Integer>();
		Random random = new Random();
		while (hs.size() < 5) {
			//获取一个1-10之间的随机数
			int temp = random.nextInt(9) + 1;
			hs.add(temp);
		}
		for (Integer integer : hs) {
			System.out.print(integer + "  ");
		}
	}

点评

random.nextInt(9) + 1只能返回1-9吧,nextInt(int i)返回的是0到(i - 1)的伪随机数的  发表于 2016-8-21 19:48
回复 使用道具 举报
小小丶白 发表于 2016-8-21 16:04
[mw_shl_code=applescript,true]        public static void main(String[] args) {
                HashSet hs = new HashSet() ...

那就把值改为10就好了,思路在那
回复 使用道具 举报
推荐 Hash的集合来用没有重复值
回复 使用道具 举报
HashSet是你最好的伙伴
回复 使用道具 举报
小小丶白 发表于 2016-8-21 16:04
[mw_shl_code=applescript,true]        public static void main(String[] args) {
                HashSet hs = new HashSet() ...

int temp = random.nextInt(10) + 1;
回复 使用道具 举报
产生随机数,然后判断本次随机数是否与上次随机数相等。
回复 使用道具 举报
将 random产生的数据用HashSet或者TreeSet集合存储,其中TreeSet还有自动排序功能。
回复 使用道具 举报
hashset 和math 类中的 random 结合
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马