`

生成8位随机不重复的数字编号

 
阅读更多
    package com.jjinfo.common.util;  
    import java.util.Arrays;  
    import java.util.Random;  
      
    /** 
     * 
     */  
    public class RandomNumberGenerator {  
      
        /** 
         * 这是典型的随机洗牌算法。 
         * 流程是从备选数组中选择一个放入目标数组中,将选取的数组从备选数组移除(放至最后,并缩小选择区域) 
         * 算法时间复杂度O(n) 
         * @return 随机8为不重复数组 
         */  
        public static String generateNumber() {  
            String no="";  
            //初始化备选数组  
            int[] defaultNums = new int[10];  
            for (int i = 0; i < defaultNums.length; i++) {  
                defaultNums[i] = i;  
            }  
      
            Random random = new Random();  
            int[] nums = new int[LENGTH];  
            //默认数组中可以选择的部分长度  
            int canBeUsed = 10;  
            //填充目标数组  
            for (int i = 0; i < nums.length; i++) {  
                //将随机选取的数字存入目标数组  
                int index = random.nextInt(canBeUsed);  
                nums[i] = defaultNums[index];  
                //将已用过的数字扔到备选数组最后,并减小可选区域  
                swap(index, canBeUsed - 1, defaultNums);  
                canBeUsed--;  
            }  
            if (nums.length>0) {  
                for (int i = 0; i < nums.length; i++) {  
                    no+=nums[i];  
                }  
            }  
      
            return no;  
        }  
        private static final int LENGTH = 8;  
      
        private static void swap(int i, int j, int[] nums) {  
            int temp = nums[i];  
            nums[i] = nums[j];  
            nums[j] = temp;  
        }  
          
        public static String generateNumber2() {  
            String no="";  
            int num[]=new int[8];  
            int c=0;  
            for (int i = 0; i < 8; i++) {  
                num[i] = new Random().nextInt(10);  
                c = num[i];  
                for (int j = 0; j < i; j++) {  
                    if (num[j] == c) {  
                        i--;  
                        break;  
                    }  
                }  
            }  
            if (num.length>0) {  
                for (int i = 0; i < num.length; i++) {  
                    no+=num[i];  
                }  
            }  
            return no;  
        }  
      
        public static void main(String[] args) {  
            for (int i = 0; i < 10; i++) {  
    //            System.out.println(generateNumber());  
                System.out.println(generateNumber2());  
            }  
        }  
    }  

分享到:
评论

相关推荐

    生成8位随机不重复的数字编号的方法

    生成随机不重复的数字编号在某些情况下也会用到,本文以生成8位随机不重复的数字编号为例与大家分享下具体的实现过程,感兴趣的朋友可以参考下

    利用时间生成8位不重复数

    在开发过程中,会遇到生成XX编号之类的数据,而且这编号不能重复,所以根据当前时间,生成8位不重复的数.

    随机产生8位无重复数

    在Struts+Spring+Mybatis基础上写的比较灵活的产生随机数,可以用到用户编号随机产生,其中验证了随机数不会重复产生。

    自动生成不重复无序化id

    这是自动生成不重复主键的代码包,直接导包进入程序即可使用,帮助生成由字母数字组成的16位id号,可以用于数据库主键存储(使用数据库自增主键始终有问题,不适合大型程序的使用),该代码包运用于很多大型企业级...

    JAVA生成订单号(日期+流水号)

    JAVA生成订单号(日期+流水号) java按日期加流水号方式生成订单号,已经测试过,可递增方式生成。

    Java编程实现生成给定范围内不重复随机数的方法小结

    主要介绍了Java编程实现生成给定范围内不重复随机数的方法,结合实例形式总结分析了java基于数学运算与判断实现不重复随机数的生成功能,需要的朋友可以参考下

    基于Java开发的猜文字小游戏【100012096】

    软件随机生成一个不重复的四位数字,用户输入四位数字,输出猜测的结果,可反复猜测,猜测成功后可增加该用户积分。

    365抽奖软件

    365抽奖软件操作简单(只需三个简单的步骤),简洁易用,稳定可靠,经历多次正式抽奖... 支持可选择重复/不重复中奖。  支持自动生成编号,支持从 TXT或Exlce中导入抽奖人员。  支持中奖名单显示、打印、保存。

    EXCEL函数公式集

    excel常用函数公式及技巧搜集 ...一列中不输入重复数字 如果要查找重复输入的数字 单元格输入 大量0值输入超级技巧 如何在C列中输入工号在D列显示姓名 输入提示如何做 在信息输入前就给予提示 数据有效性

    Excel公式大全操作应用实例(史上最全)

    excel常用函数公式及技巧搜集 ...一列中不输入重复数字 如果要查找重复输入的数字 单元格输入 大量0值输入超级技巧 如何在C列中输入工号在D列显示姓名 输入提示如何做 在信息输入前就给予提示 数据有效性

    天天抽奖软件 v6.21.zip

    天天抽奖软件采用计算机从第一个参选人到最后一个之间随机抽取,随机数种子不重复,不会出现中奖结果扎堆的情况。 天天抽奖软件支持由数字、字母、中文汉字混合的姓名、手机号、身份证号等各种名单;支持可选择重复...

    《Excel应用大全》示例文件 光盘文件

    • 统计开奖号码中不重复数字个数 • 取得零件规格中的最后序号 • 利用TEXT函数格式化设备编号 • 从身份证号码中提取员工的生日信息 • 使用TEXT 函数显示中文格式的年份 • 将数值转换为商业发票中的中文大写金额...

    经典SQL脚本大全

    │ │ 5.2.3 生成纯数字随机编号的示例.sql │ │ 5.3.2 融合了补号处理的编号生成处理示例.sql │ │ 5.3.3 使用UPDATE进行编号重排的处理示例.sql │ │ 5.3.3 使用临时表进行编号重排的处理示例.sql │ │ 5.3.3 ...

    Sqlserver2000经典脚本

    │ 5.2.3 生成纯字母随机编号的示例(仅大小或者小写).sql │ │ 5.2.3 生成纯字母随机编号的示例(大小写混合).sql │ │ 5.2.3 生成纯数字随机编号的示例.sql │ │ 5.3.2 融合了补号处理的编号生成...

    吉祥抽奖软件 v3.6.5.zip

    中奖结果:不重复、随机中奖,实时保存(不怕断电死机)、打印、导出、下次启动后再继续抽奖 开始停止:自由设置开始、停止抽奖快捷键,也可禁用快捷键可防止按错 中奖显示区:智能字体选择、多列显示算法 快捷键...

    信息技术基础-数据库管理系统.pptx

    说 明 字段值 自动编号 自动添加一个唯一的序号,按1递增或随机整数,通过设置格式可以添加前缀,如添加前缀ABC后,显示为ABC001、ABC002 不可以手动输入和修改,不可粘贴 是/否 逻辑值,打勾,字段值占用1位存储 ...

    Excel函数活用范例大辞典(全新版).何先军.2015-2(带书签高清文字版).pdf

    025 随机生成抽检产品的序号 70 026 制作随机顺序的面试次序表 73 027 将三个部门的员工随机分组 77 028 随机抽取5名员工的编号 81 029 随机抽取一名员工工资数据 84 ◎取舍函数 87 030 将跳远平均成绩...

    cage-number-piece-generator:十八

    描述该网站试图使用JavaScript和jQuery随机生成John Cage数字片风格的分数。 最大持续时间滑块指示所需分数的最大持续时间。 我提供了硬币翻转随机数生成器,以决定生成的时间括号实际上是从0'00“开始还是以最大...

    open_kit:公共资源库

    介绍OpenKit 是我个人公司做项目的过程中总结出的一些比较好用的工具,其中包括,时间转化,时间计算,红包计算等,比较好用的静态方法,同时,还有一些第三方的接口的集成。...随机取 N 个不重复的

    EXCEL集成工具箱V8.0完整增强版(精简)

    可以生成含重复值与不含重复值并可选是否排序的连接字符串。连接上万个字符只需短短1分钟即完成。 【隔行插入】 在当前工作表中允许从M行到N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将...

Global site tag (gtag.js) - Google Analytics