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位随机不重复的数字编号为例与大家分享下具体的实现过程,感兴趣的朋友可以参考下
在开发过程中,会遇到生成XX编号之类的数据,而且这编号不能重复,所以根据当前时间,生成8位不重复的数.
在Struts+Spring+Mybatis基础上写的比较灵活的产生随机数,可以用到用户编号随机产生,其中验证了随机数不会重复产生。
这是自动生成不重复主键的代码包,直接导包进入程序即可使用,帮助生成由字母数字组成的16位id号,可以用于数据库主键存储(使用数据库自增主键始终有问题,不适合大型程序的使用),该代码包运用于很多大型企业级...
JAVA生成订单号(日期+流水号) java按日期加流水号方式生成订单号,已经测试过,可递增方式生成。
主要介绍了Java编程实现生成给定范围内不重复随机数的方法,结合实例形式总结分析了java基于数学运算与判断实现不重复随机数的生成功能,需要的朋友可以参考下
软件随机生成一个不重复的四位数字,用户输入四位数字,输出猜测的结果,可反复猜测,猜测成功后可增加该用户积分。
365抽奖软件操作简单(只需三个简单的步骤),简洁易用,稳定可靠,经历多次正式抽奖... 支持可选择重复/不重复中奖。 支持自动生成编号,支持从 TXT或Exlce中导入抽奖人员。 支持中奖名单显示、打印、保存。
excel常用函数公式及技巧搜集 ...一列中不输入重复数字 如果要查找重复输入的数字 单元格输入 大量0值输入超级技巧 如何在C列中输入工号在D列显示姓名 输入提示如何做 在信息输入前就给予提示 数据有效性
excel常用函数公式及技巧搜集 ...一列中不输入重复数字 如果要查找重复输入的数字 单元格输入 大量0值输入超级技巧 如何在C列中输入工号在D列显示姓名 输入提示如何做 在信息输入前就给予提示 数据有效性
天天抽奖软件采用计算机从第一个参选人到最后一个之间随机抽取,随机数种子不重复,不会出现中奖结果扎堆的情况。 天天抽奖软件支持由数字、字母、中文汉字混合的姓名、手机号、身份证号等各种名单;支持可选择重复...
• 统计开奖号码中不重复数字个数 • 取得零件规格中的最后序号 • 利用TEXT函数格式化设备编号 • 从身份证号码中提取员工的生日信息 • 使用TEXT 函数显示中文格式的年份 • 将数值转换为商业发票中的中文大写金额...
│ │ 5.2.3 生成纯数字随机编号的示例.sql │ │ 5.3.2 融合了补号处理的编号生成处理示例.sql │ │ 5.3.3 使用UPDATE进行编号重排的处理示例.sql │ │ 5.3.3 使用临时表进行编号重排的处理示例.sql │ │ 5.3.3 ...
│ 5.2.3 生成纯字母随机编号的示例(仅大小或者小写).sql │ │ 5.2.3 生成纯字母随机编号的示例(大小写混合).sql │ │ 5.2.3 生成纯数字随机编号的示例.sql │ │ 5.3.2 融合了补号处理的编号生成...
中奖结果:不重复、随机中奖,实时保存(不怕断电死机)、打印、导出、下次启动后再继续抽奖 开始停止:自由设置开始、停止抽奖快捷键,也可禁用快捷键可防止按错 中奖显示区:智能字体选择、多列显示算法 快捷键...
说 明 字段值 自动编号 自动添加一个唯一的序号,按1递增或随机整数,通过设置格式可以添加前缀,如添加前缀ABC后,显示为ABC001、ABC002 不可以手动输入和修改,不可粘贴 是/否 逻辑值,打勾,字段值占用1位存储 ...
025 随机生成抽检产品的序号 70 026 制作随机顺序的面试次序表 73 027 将三个部门的员工随机分组 77 028 随机抽取5名员工的编号 81 029 随机抽取一名员工工资数据 84 ◎取舍函数 87 030 将跳远平均成绩...
描述该网站试图使用JavaScript和jQuery随机生成John Cage数字片风格的分数。 最大持续时间滑块指示所需分数的最大持续时间。 我提供了硬币翻转随机数生成器,以决定生成的时间括号实际上是从0'00“开始还是以最大...
介绍OpenKit 是我个人公司做项目的过程中总结出的一些比较好用的工具,其中包括,时间转化,时间计算,红包计算等,比较好用的静态方法,同时,还有一些第三方的接口的集成。...随机取 N 个不重复的
可以生成含重复值与不含重复值并可选是否排序的连接字符串。连接上万个字符只需短短1分钟即完成。 【隔行插入】 在当前工作表中允许从M行到N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将...