输出不重复的随机数

优化后:
package com.fqs.demo;

import java.util.Random;

public class OnlyYou {
    public static void main(String[] args) {
        //第一   定义一个5位的数组
         int geShu=5;
         int[]arr=new int[geShu];
        //第二   随机数存放到下标0的数组中
         Random sj=new Random();
         arr[0]=sj.nextInt(geShu)+1;
         
        //第三 核心找到不重复的放到数组中
         for(int i=1;i<geShu;) {
            //随机数放到temp中
            int  temp=sj.nextInt(geShu)+1;
             //立flag
             boolean isFind=false;
             
             for(int j=0;j<geShu;j++) {
                //数组的每个值和temp比对,如果相等 跳出循环
                 if(temp==arr[j]) {
                     isFind=true;
                     break;
                 }
             }
             //不重复的值放的arr[i]
             if(!isFind) {
                 //将临时值放入数组中
                 arr[i]=temp;
                 //循环继续 开始找下一个不重复的随机数
                 i++;
             }
         }
         
         //输出
         for(int i=0;i<geShu;i++) {
             System.out.println(arr[i]);
         }
        
    }
    
}

 



正确的:
package com.fqs.demo;

import java.util.Random;

public class LJ{
    public static void main(String[] args) {
          /**
         * 本方法的思路是:
         * 1、创建一个5个元素的数组, 用来存放随机数
         * 2、逐个取随机数,并且第一个随机数直接放在a[0]
         * 3、第二个随机数开始,
         * 需要与数组中已经存在的元素进行逐个比较,
         * 直到取出不重复的随机数,
         * 否则一直重复取随机数
         * 
         * 
         */
        //1.创建一个5个元素的数组
        int []arr=new int[5];
        Random sj=new Random();
        //2.第一个随机数直接放在a[0]
        int number1=sj.nextInt(arr.length)+1;
        
        arr[0]=number1;
        
        //3.核心
         for(int i=1;i<arr.length;) {
             //开启外层循环
             //外循环第一部分
            int number=sj.nextInt(arr.length)+1;  
            //在外层for循环中定个flag  找到出现过的值
            boolean isFind = false;//赋初值是没出现过
            
            for (int j =0; j < arr.length; j++) {
                //开启内循环
                if (arr[j] == number) {
                    //如果数组内的各个元素和新出现的随机数一样
                    isFind = true;
                    //说明找到了相同值
                    break;
                    //跳出循环
                }
            }//结束内循环
            
            //继续外层循环,外层循环第二部分
            if (!isFind) {
                //如果没有找到相同值
                arr[i]=number;
                //将新随机数赋值给数组arr[i],i 是外层循环的下标
                i++;
                //外层循环继续
            }
         }//结束外层for循环
            
            //打印数组
            for(int i=0;i<arr.length;i++) {
                System.out.println("arr[i]:"+arr[i]);
                
            
        }
        
        
    }

}

 


错误的:

package
com.fqs.demo; import java.util.Random; public class NoChongFuSJ { public static void main(String[] args) { /** * 本方法的思路是: * 1、创建一个5个元素的数组, 用来存放随机数 * 2、逐个取随机数,并且第一个随机数直接放在a[0] * 3、第二个随机数开始, * 需要与数组中已经存在的元素进行逐个比较, * 直到取出不重复的随机数, * 否则一直重复取随机数 * * */ //1.创建一个5个元素的数组 int []arr=new int[5]; Random sj=new Random(); //2.第一个随机数直接放在a[0] int number1=sj.nextInt(100)+1; arr[0]=number1; //3.当前一个值不等于后一个值时,循环继续 for(int i=1;i<arr.length;) { int number=sj.nextInt(100)+1; arr[i]=number; if(arr[i]!=arr[i-1]) { i++;//当前一个值不等于后一个值时,循环继续 } }//结束for循环 //打印数组 for(int i=0;i<arr.length;i++) { System.out.println("arr[i]:"+arr[i]); } } }

 原创https://www.cnblogs.com/jesse-zhao/p/10764896.html?ivk_sa=1024320u;在该博主基础上做了修改

posted @ 2023-02-10 21:47  胖豆芽  阅读(20)  评论(0编辑  收藏  举报