`

生成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());
        }
    }
}

 

2
3
分享到:
评论

相关推荐

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

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

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

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

    随机产生8位无重复数

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

    自动生成不重复无序化id

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

    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行。 【制作工资条】 瞬间将...

    EXCEL集成工具箱V6.0

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

Global site tag (gtag.js) - Google Analytics