首页 > 其他分享 >随机不重复数组

随机不重复数组

时间:2023-07-31 23:22:05浏览次数:28  
标签:arr 重复 重随 ++ int length 随机 数组

创建一个长度为 6 的 int 型数组,要求数组元素的值都在 1-30 之间,且是随机赋值。同时,要求元素的值各不相同。

	/**
     * 各个位置数字不同
     * 一直随机即可
     * 思路:
     * 若某个位置数字相同 eg: 位置1 和位置2数字相同
     * arr[1] = arr[2] 需重新随机数字 但重新随机后 数字可能还是相同 还是需要重新随机还一直嵌套判断吗?
     * 解:
     * 将重随的逻辑放到判断之外,可以使用标志位,
     * 又因为随机次数不确定,需要使用死循环
     */
    @Test
    public void test1() {
        int[] arr = new int[6];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int)(Math.random() * 30) + 1;
            //设置标志位的目的是将判断数字相同与重随两步从嵌套到分开
            boolean flag = false;

            //因为比较,重随次数不确定,所以要死循环
            while (true){

                for (int j = 0; j < i; j++) {
                    if (arr[i] == arr[j]){
                        //若为ture,则需要重随
                        flag = true;
                        break;
                    }
                }
                if (flag) {
                 //重随最后一个位置i,置为false,并跳出当前循环,因为为死循环,所以会继续判断重随的数是否还是重复
                    arr[i] = (int)(Math.random() * 30) + 1;
                    flag = false;
                    continue;
                }
                break;
            }
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + ",");
        }
    }

思路2:退到上一个位置

    @Test
    public void  test2(){
        int[] arr = new int[6];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int)(Math.random() * 30) + 1;
            for (int j = 0; j < i; j++) {
                if (arr[i] == arr[j]) {
                    i--;
                    break;
                }
            }
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

标签:arr,重复,重随,++,int,length,随机,数组
From: https://www.cnblogs.com/9fall/p/17595291.html

相关文章

  • 接口幂等性,qps,tps,并发量,pv,uv,脏读,不可重复读,幻读
    1脏读,不可重复读,幻读,mysql5.7以后默认隔离级别是什么?脏读:'当一个事务读取了另一个未提交事务的数据时,称为脏读。当事务A读取到事务B尚未提交的数据时,如果事务B回滚,那么事务A读取的数据就是无效的或者不一致的,导致脏读的结果是不可靠的。'不可重复读:'在同一个事务中,对于相同的......
  • Day 7: Shell数组和循环操作
    学习目标学习内容1.数组的定义和赋值2.数组的遍历for循环遍历数组长度3.练习任务大树哥个人信息学习目标学习Shell中的数组和循环操作。掌握数组的定义、遍历和操作方法。练习编写脚本,使用数组存储和处理数据。学习内容今天我们将学习Shell中的数组和循环操作,这......
  • 脏读,不可重复读,幻读 ,mysql5.7以后默认隔离级别是什么?什么是qps,tps,并发量,pv,uv、什么是
    目录一、脏读,不可重复读,幻读,mysql5.7以后默认隔离级别是什么?脏读,不可重复读,幻读脏读不可重复读幻读mysql5.7以后默认隔离级别是什么二、什么是qps,tps,并发量,pv,uv三、什么是接口幂等性问题,如何解决?一、脏读,不可重复读,幻读,mysql5.7以后默认隔离级别是什么?程序访问数据库,往往是多......
  • 2799.统计完全子数组的数目-356
    统计完全子数组的数目给你一个由正整数组成的数组nums。如果数组中的某个子数组满足下述条件,则称之为完全子数组:子数组中不同元素的数目等于整个数组不同元素的数目。返回数组中完全子数组的数目。子数组是数组中的一个连续非空序列。示例1:输入:nums=[1,3,1,2......
  • php随机图片源码
    <?php//设置图片文件夹路径$dir='images/';//获取文件夹中所有图片文件名$files=glob($dir.'*.{jpg,jpeg,png,gif}',GLOB_BRACE);//随机选择一张图片$random_file=$files[array_rand($files)];//设置响应头为图片类型header('Content-Type:image/jpeg');//输出......
  • 大二暑期实习记录(一):处理组件绑定数据错误(数组解构,map()方法)
    好家伙,搬砖 今天在做组件迁移(从一个旧平台迁移到一个新平台)的时候,发现了一些小小的问题: 1.错误描述:在穿梭框组件中,使用"节点配置"方法添加数据的时候,左测数据选择框直接消失了这里我们猜测一下,大概是数据处理出了问题此处,我们使用"数据绑定"绑定数据方法: ......
  • unsigned char数组拷贝数据段,置0数据段,未越界方法
    需要注意的是,自己去写C语言场景下数组的拼接,得不偿失,因为涉及到了数组的拼接,就会有动态分配内存,目前C语言是没有这个功能的;自己写会容易内存报错;因此,在涉及到C语言数组时,最好是只有拷贝,赋值等操作,在一开始确定数组时,把内存分配大一些;这里主要对内存越界的地方做个封装;然后可以实......
  • 视频直播网站源码,随机密码生成器
    视频直播网站源码,随机密码生成器方法调用 publicstaticvoidmain(String[]args){    //排除字符0OoB81lI,包含大写字母,包含小写字母,包含数字,包含特殊字符,长度8,生成10000个,特殊字符集    generatePassword("0OoB81lI",true,true,true,true,8,10000,"~!@^*%......
  • mongodb 数组文档 addtoset
    MongoDB数组文档addtoset在MongoDB中,数组文档是一种非常有用的数据结构,它可以在一个文档中存储多个值,并且可以非常灵活地对其进行添加、更新和删除操作。其中一个常用的数组操作是addtoset,它用于向数组文档中添加新的元素。数组文档简介在MongoDB中,数组文档是一种嵌套在......
  • python 将数组保存txt
    Python将数组保存为txt文件作为一名经验丰富的开发者,我将向你介绍如何使用Python将数组保存为txt文件。在这篇文章中,我将提供一个简单的步骤表格,然后逐步解释每一步需要做什么,并附上相应的代码和注释。步骤以下是将数组保存为txt文件的步骤。步骤描述1导入所需的模块......