精华内容
下载资源
问答
  • Java生成16位不重复的随机字符串

    千次阅读 2021-03-09 21:08:38
    /*** 生成16位不重复的随机数,含数字+大小写* @return*/private static String getGUID() {StringBuilder sb = new StringBuilder();//产生16位的强随机数Random rd = new SecureRandom();for (int i = 0; i < ...

    说明:项目中需要使用,记录一下!

    /**

    * 生成16位不重复的随机数,含数字+大小写

    * @return

    */

    private static String getGUID() {

    StringBuilder sb = new StringBuilder();

    //产生16位的强随机数

    Random rd = new SecureRandom();

    for (int i = 0; i < 16; i++) {

    //产生0-2的3位随机数

    int type = rd.nextInt(3);

    switch (type){

    case 0:

    //0-9的随机数

    sb.append(rd.nextInt(10));

    break;

    case 1:

    //ASCII在65-90之间为大写,获取大写随机

    sb.append((char)(rd.nextInt(25)+65));

    break;

    case 2:

    //ASCII在97-122之间为小写,获取小写随机

    sb.append((char)(rd.nextInt(25)+97));

    break;

    default:

    break;

    }

    }

    return sb.toString();

    }

    注意:本文归作者所有,未经作者允许,不得转载

    展开全文
  • 一个java随机生成6数字字符数组实例,有需要了解的朋友可参考参考。 代码如下 复制代码 package com.system.oss.common.util;/*** 动态生成随机字符数组** @author 苏持恒*/public class ShortMessageCodeUntil{/*...

    一个java随机生成6位数字字符数组实例,有需要了解的朋友可参考参考。

     代码如下复制代码

    package com.system.oss.common.util;

    /**

    * 动态生成随机字符数组

    *

    * @author 苏持恒

    */

    public class ShortMessageCodeUntil

    {

    /**

    * 随机生成4位数字字符数组

    *

    * @return rands

    */

    public static char[] generateCheckCode()

    {

    String chars = "0123456789";

    char[] rands = new char[4];

    for (int i = 0; i < 4; i )

    {

    int rand = (int) (Math.random() * 10);

    rands[i] = chars.charAt(rand);

    }

    return rands;

    }

    /**

    * 随机生成6位数字字符数组

    *

    * @return rands

    */

    public static char[] generateCheckPass()

    {

    String chars = "0123456789";

    char[] rands = new char[6];

    for (int i = 0; i < 6; i )

    {

    int rand = (int) (Math.random() * 10);

    rands[i] = chars.charAt(rand);

    }

    return rands;

    }

    }

    展开全文
  • 原理就是使用random对象生成随机值,然后根据生成随机生成大小写字母或者是数字再拼接成字符串即可,其实准确来说应该是生成任意位数的随机字符串,因为randomSequence的入参size决定了字符串的长度 import ...

    原理就是使用random对象生成随机值,然后根据生成的随机值生成大小写字母或者是数字再拼接成字符串即可,其实准确来说应该是生成任意位数的随机字符串,因为randomSequence的入参size决定了字符串的长度 

    import java.util.Random;
    
    public class GeneratorUtil {
        private static Random random = new Random();
        private static final char ALPHA = 'a';
        private static final char NUMBER = '0';
        private static final char UPPERCASEALPHA = 'A';
        private static final int ALPHABOUND = 26;
        private static final int NUMBERBOUND = 10;
        private static final int RANDOMTYPEBOUND = 3;
    
        public static String randomSequence(int size){
            StringBuffer sequence = new StringBuffer();
            for(int i=0;i<size;i++){
                sequence.append(getRandomValue());
            }
            return sequence.toString();
        }
    
        private static char getRandomValue(){
            int index = random.nextInt(RANDOMTYPEBOUND);
            if(index == 0){
                return randomAlpha();
            }else if(index == 1){
                return randomNumber();
            }else{
                return randomUpperAlpha();
            }
        }
    
        private static char randomAlpha(){
            return randomValue(ALPHA,ALPHABOUND);
        }
    
        private static char randomNumber(){
            return randomValue(NUMBER,NUMBERBOUND);
        }
    
        private static char randomUpperAlpha(){
            return randomValue(UPPERCASEALPHA,ALPHABOUND);
        }
    
        private static char randomValue(int start,int bound){
            int index = random.nextInt(bound);
            char next = (char)(start + index);
            return next;
        }
    
        public static void main(String[] args) {
            for(int i=0;i<10;i++){
                System.out.println(randomSequence(32));
            }
        }
    
    }
    

     

    展开全文
  • 前言用字母和数字生成的6不重复的字符串需要满足如下条件:唯一性:确保每个字符串都是系统中独一无二的,使得可以根据此字符串进行反向推导。随机性:难于从字符串上推断出生成机制。高效性:算法简单,时间...

    目录

    一套优秀的随机字符串生成机制不仅需要确保全局唯一性,还需要考虑到性能等问题。本篇文章带大家探究一下如何用字母和数字生成随机字符串。

    前言

    用字母和数字生成的6位不重复的字符串需要满足如下条件:

    唯一性:确保每个字符串都是系统中独一无二的,使得可以根据此字符串进行反向推导。

    随机性:难于从字符串上推断出生成机制。

    高效性:算法简单,时间复杂度低,或者不过度耗费系统资源。

    简洁性:用户可以方便的识别。

    例如,我们平时看到的邀请码就是一组随机字符串,她的长度通常在6位左右,就是为了满足简洁性。

    随机生成字符串

    这里提供五种生成随机字符串的生成机制,源码如下:

    import java.util.Arrays;

    import java.util.Collections;

    import java.util.List;

    import java.util.Random;

    /**

    * 用字母和数字生成不重复的随机字符串

    *

    * @author Wiener

    * @date 2020/11/17

    */

    public class RandomUtil {

    /**

    * 字符源,可以剔除O、L、0和1,避免0和1与O和L混淆,这里没有剔除

    * 可以根据需要加入小写英文字母和特殊字符等

    */

    private static final String[] GENERATE_SOURCE = new String[]{"0", "1", "2", "3", "4", "5", "6", "7",

    "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",

    "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",

    "W", "X", "Y", "Z"};

    private static final int STR_LEN = GENERATE_SOURCE.length;

    /**

    * 使用 Collections.shuffle 生成六位随机字符串

    *

    * @return

    */

    private static String generateByShuffle() {

    List list = Arrays.asList(GENERATE_SOURCE);

    //打乱元素排序,增加反推难度

    Collections.shuffle(list);

    StringBuilder randomStr = new StringBuilder();

    for (int i = 0; i < STR_LEN; i++) {

    randomStr.append(list.get(i));

    }

    //更改下面两个数字可以取到不同位数的随机数哦

    return randomStr.substring(4, 10);

    }

    public static void main(String[] args) {

    for (int i = 0; i < 10; i++) {

    System.out.println(generateByRandom(6));

    }

    System.out.println(generateByShuffle() + "---" + STR_LEN);

    }

    /**

    * 生成数字和字母组合,字母区分大小写

    *

    * @param length 随机字符串的长度

    * @return

    */

    public static String generateByRandom(final int length) {

    StringBuilder randomSb = new StringBuilder(length);

    Random random = new Random();

    for (int i = 0; i < length; i++) {

    // 输出字母还是数字

    String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";

    // 字符串

    if ("char".equals(charOrNum)) {

    // 判断字母大小写

    int choice = random.nextInt(2) % 2 == 0 ? 65 : 97;

    randomSb = randomSb.append((char) (choice + random.nextInt(26)));

    } else {

    randomSb = randomSb.append(random.nextInt(10));

    }

    }

    return randomSb.toString();

    }

    /**

    * 生成随机字符串,generateByRandom的简化版

    * @param count 随机字符串的长度

    * @param source 源字符集

    * @return

    */

    public static String doGenerate(int count, String[] source) {

    StringBuilder sb = new StringBuilder(count);

    int sourceLen = source.length;

    for (int i = 0; i < count; i++) {

    final int index = new Random().nextInt(sourceLen);

    sb.append(source[index]);

    }

    return sb.toString();

    }

    /**

    * @param begin 自增长序列

    * @return

    */

    public static String generateByOrder(final int begin) {

    List src = Arrays.asList(GENERATE_SOURCE);

    Collections.shuffle(src);

    StringBuilder randomSb = new StringBuilder(6);

    int i4 = (begin) % 36;

    int i3 = (begin / (36)) % 36;

    int i2 = (begin / (36 * 36)) % 36;

    int i1 = (begin / (36 * 36 * 36)) % 36;

    int i0 = (begin / (36 * 36 * 36 * 36)) % 36;

    int i = (begin / (36 * 36 * 36 * 36 * 36)) % 36;

    randomSb = randomSb.append(src.get(i0)).append(src.get(i1))

    .append(src.get(i2)).append(src.get(i3))

    .append(src.get(i4)).append(src.get(i));

    return randomSb.toString();

    }

    }

    第一种生成机制generateByShuffle()基于Collections.shuffle 生成六位随机字符串。generateByRandom(int length)借助Random()函数生成区分字母大小写的随机字符串,字符串长度可以根据入参自定义,提供了更灵活的生成机制。doGenerate(int count, String[] source) 是generateByRandom(int length)的简化版。第四种生成机制generateByOrder(int begin)需要在使用时维护一个自增长序列,保证入参begin是自增长的,举个例子:

    public static void main(String[] args) {

    for (int i = 0; i < 100; i = i+10) {

    System.out.println(generateByOrder(i));

    }

    }

    第五种生成机制是直接使用randomAlphanumericc(final int count)函数,她位于org.apache.commons.lang3包下的RandomStringUtils类中,可以随机生成指定长度为count的字符串。

    代码如下:

    /**

    * @param count the length of random string to create

    * @return

    */

    public static String randomAlphanumeric(int count) {

    return RandomStringUtils.randomAlphanumeric(count);

    }

    另外,RandomStringUtils类中的函数randomAscii(final int count)可以生成从ASCII 32到126组成的随机字符串,长度为count。

    结束语

    本文介绍了四种用26个字母和10个数字,随机生成一个不重复6位字符串的策略。当业务不断发展,如果36^6个字符串依旧无法满足业务需求,则可采用以下方式进行扩充:

    扩充邀请码位数,比如变为8位或者更多位。

    扩充字符源,比如加入小写字母,加减号等特殊字符。第二种和第四种生成机制已经使用了小写字母。

    欢迎点赞阅读,一同学习交流;若有疑问,请在文章下方留言!

    Reference

    标签:count,Java,String,int,36,生成,五种,字符串

    来源: https://www.cnblogs.com/east7/p/14015956.html

    展开全文
  • Java提供了许多不同的方法来编写随机字符串生成器应用程序,下面介绍几种方式。UUIDUUID是由一组32位数的16进制数字所构成,故UUID理论上的总数为1632=2128,约等于3.4 x 1038。也就是说若每纳秒产生1兆个UUID,要花...
  • packagep2p_web;importjava.util.ArrayList;importjava.util.Arrays;.../*** 字符随机生成类*@authorASUS**/public classPassWord {/*** 密码类型枚举*@authorASUS*/public static enumTYPE {/*** 字符型*/LETTE...
  • //生成8位随机字符串(重复概率1/218万亿) private String generateShortUuid() { String[] chars = new String[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q...
  • 下面的代码向您展示如何使用Apache Commons-Lang RandomStringUtils类生成一些随机字符串数据。packageorg.nhooo.example.commons.lang;importorg.apache.commons.lang3.RandomStringUtils;...
  • 本文实例为大家分享了Java生成6位随机字符串的实现代码,具体内容如下package com.amos.tools;import java.util.ArrayList;import java.util.List;import java.util.Random;public class InvertCodeGenerator {...
  • //导入包 import org.apache.commons.lang3.RandomStringUtils; //方法调用 String fakevin=RandomStringUtils.randomAlphanumeric(20);
  • import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Random;public class CollectionSort {private List ls;public CollectionSort(){ls=new Ar...
  • 本文实例为大家分享了java随机生成时间字符串的具体代码,供大家参考,具体内容如下package com.wechat.utils;import java.text.SimpleDateFormat;import java.util.Date;/*** Created by hexun on 2017/2/4.*/...
  • java生成随机字符串的两种方法

    千次阅读 2021-02-12 12:44:09
    本文实例为大家分享了java生成随机字符串的具体代码,供大家参考,具体内容如下import java.util.Random;public class CharacterUtils {//方法1:length为产生的位数public static String getRandomString(int ...
  • JAVA随机的32长的字符串undefined@TestundefinedpublicvoidtestToBean()//需要有一个对应的javabean{id,name,age + set、get、tostring方法}undefined{undefined/**undefined*1.创建Mapundefined*/undefinedMapmap...
  • import java.util.ArrayList;import java.util.Arrays;import java.util.Random;/*** 字符随机生成类* @author ASUS**/public class PassWord {/*** 密码类型枚举* @author ASUS*/public static enum T...
  • java生成随机字符串

    2021-02-28 18:31:01
    # java生成随机字符串## 添加maven依赖``` xmlorg.apache.commonscommons-text1.8```## 代码示例``` javaimport org.apache.commons.text.RandomStringGenerator;import static org.apache.commons.text....
  • Java生成随机字符串

    2021-03-17 14:03:00
    让我们首先声明一个字符串数组并初始化-String[]strArr={"P","Q","R","S","T","U","V","W"};现在,创建一个Random对象-...生成随机字符串-intres=rand.nextInt(strArr.length);示例importjava.util.Random;public...
  • Java生成随机长度的随机字符串1. 效果展示2. 代码及注释3. 字符生成4. 多多点赞交流! 1. 效果展示 生成10个长度为5-10的字符串: 可以看到,这里的字符串长度均在要求的范围内,字符串内容包含了常用的字符。 2. ...
  • packageorg.nhooo.example.security;importjava.security.SecureRandom;importjava.util.Random;publicclassRandomString{publicstaticfinalStringSOURCES="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopq...
  • java随机生成字符串的方法(三种)1、生成的字符串每个位置都有可能是...//length用户要求产生字符串的长度public static String getRandomString(int length){String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLM...
  • java实现随机生成不重复的字符串的方法发布时间:2020-05-20 17:45:27来源:亿速云阅读:423作者:鸽子可以使用random()函数与valueOf()函数来实现。random() 方法用于返回一个随机数,随机数范围为 0.0 =< Math....
  • 用纯Java生成随机无界字符串 @Test public void givenUsingPlainJava_whenGeneratingRandomStringUnbounded_thenCorrect() { byte[] array = new byte[7]; // length is bounded by 7 new Random().nextBytes...
  • java 随机字符串生成

    2021-02-25 18:23:55
    36,a-z字符,要求至少跑一天不会有不重复。privatestaticchar[]str={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'...36,a-z字符,要求至少跑一...
  • studentId = "1234567" 解决方案 Generating a random string of characters is easy - just use java.util.Random and a string containing all the characters you want to be available, e.g. public static ...
  • 在写程序中,经常会用到随机数,或者随机字符串,这里收藏一个公共的方法,以后也不用另外写了,一个参表示生成的长度,另外一个表示类型.public static String getCode(int passLength, int type){StringBuffer ...
  • import java.text.SimpleDateFormat;import java.util.Date;import java.util.Random;public class CharacterUtils {/*** 第一种方法;length为产生的位数*/public static String getRandomString(int len...
  • //length用户要求产生字符串的长度。 public static String getRandomString(int length){ String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; Random random=new Random(); ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 123,514
精华内容 49,405
关键字:

java随机生成16位字符串

java 订阅