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

import java.util.Random;

public class RandomNumberGenerator {
/**
* 这是典型的随机洗牌算法。 流程是从备选数组中选择一个放入目标数组中,将选取的数组从备选数组移除(放至最后,并缩小选择区域) 算法时间复杂度O(n)
* @return 随机8为不重复数组
* @author RICK
*/
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());
}
}
}

时间: 2024-10-08 10:29:08

160511、生成8位随机不重复的数字编号的方法的相关文章

利用random生成6位随机验证码

使用random生成6位随机验证码 #!/usr/bin/env python # _*_ coding:utf-8 _*_ import random code = [] for i in range(6):     #可在此处改变条件表达式来调整生成数字的机率     if i == random.randint(0,5):         # 如果随机数与0-5中的随机数相等,生成数字验证码        code.append(str(random.randint(0,9)))     

Java生成8位随机邀请码,不重复

public static String[] chars = new String[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n",

UUID 生成32位随机串

java通过jdk自带的UUID,生成32位的随机串 private static String generate_UUID() { UUID uuid=UUID.randomUUID(); String str = uuid.toString(); System.out.println("str: " + str); // bb01a3cd-987f-469d-9e0f-04dffa2d3278 return str.replace("-", "&quo

Java 生成32位随机字符编号

1 /** 2 * 生成32位编码 3 * @return string 4 */ 5 public static String getUUID(){ 6 String uuid = UUID.randomUUID().toString().trim().replaceAll("-", ""); 7 return uuid; 8 }

Python生成8位随机字符串的一些方法

#第一种方法 import random import string seed = "[email protected]#$%^&*()_+=-" sa = [] for i in range(8): sa.append(random.choice(seed)) salt = ''.join(sa) print salt #第二种方法 import random import string salt = ''.join(random.sample(string.ascii_le

生成4位随机验证码工具类

keyUtil: package com.duocy.util; import java.util.Random; public class keyUtil {public String keyUtil() { String str="ABCDEFGHIJKLMNOPQRSTUVWXYZqwertyuiopasdfghjklzxcvbnm0123456789"; StringBuilder st=new StringBuilder(4); for(int i=0;i<4;i++)

java生成16位随机UUID数

public void testUid() { for (int i = 0; i < 100; i++) { UUID uuid = UUID.randomUUID(); System.out.println(uuid.toString()); } } 9e0db051-5ca9-46f4-958f-ebd3e2ddae5c 071ca803-735b-4e5a-8d22-8abd49a251c8 c18e6338-ad63-42d7-b372-a3b2a382aded 6a64f5c5-0a

SQL生成n位随机字符串

--1.随着newid() go --创建一个视图(因为不能在功能直接用于newid()) create view vnewid as select newid() N'MacoId'; go --创建函数 create function getrandstr(@n int) returns varchar(max) as begin declare @i int set @i=ceiling(@n/32.00) declare @j int set @j=0 declare @k varcha

生成n位随机字符串

--1.借助newid() Go --创建视图(因为在函数中无法直接使用newid()) create view vnewid as select newid() N'MacoId'; go --创建函数 create function getrandstr(@n int) returns varchar(max) as begin declare @i int set @i=ceiling(@n/32.00) declare @j int set @j=0 declare @k varchar