`
FX夜归人
  • 浏览: 4263 次
  • 来自: 北京
社区版块
存档分类
最新评论

N 位随机数字串的 JAVA 生成实现

    博客分类:
  • Java
阅读更多
/**
 * 功能描述 随机数工具类<br />
 * @author FengXueYeGuiRen
 * 创建时间 2014-7-25<br />
 */
public class RandomUtil {
    //  随机数生成器
    private static java.util.Random random = new java.util.Random();
    //  生成随机数的默认位数
    private static final long BITS = 6;
    
    /**
     * 生成(获得)n位随机数串
     * @param n 生成随机数串的位数
     * @return 返回生成的 n为数字串
     */
    public static String getNBitRandomDigit(long n){
        if(n < 1){  //  若 n小于 1,则设置为生成随机数的默认位数
            n = BITS;
        }
        //  存储中间生成的数串
        StringBuffer randomDigitStr = new StringBuffer();
        //  生成的随机数
        long randomDigit;
        
        if(n < 18){
            //  生成 n位随机数(-0.5避免生成的前 n均为 9最终四舍五入时(可能)超出一位数字)
            randomDigit = 
                    Math.round((random.nextDouble() * Math.pow(10, n)) - 0.5);
            randomDigitStr.append(randomDigit);
        } else {
            //  n超过 18,则通过生成多个 18位随机数连接成更长串
            for(int i = 0; i < Math.floor(n / 18); ++i){
                //  生成 18位随机数(long最长为 19位且非所有位均为 9,所以取 18位)
                randomDigit =
                        Math.round((random.nextDouble() * Math.pow(10, 18)) - 0.5);
                randomDigitStr.append(randomDigit);
            }
        }
        //  生成的随机数串位数
        int randomDigitStrLength = randomDigitStr.length();
        
        //  生成的随机数串位不足但是也不达 18位时,循环随机插入随机生成的[0, 9]间任意一位数
        if(randomDigitStrLength < n){
            for(int i = 0; i < n - randomDigitStrLength; ++i){
                //  生成可插入的下标位置(若位置为 randomDigitStr.length(),则是在末尾添加)
                int offset = random.nextInt(randomDigitStr.length() + 1);
                if(offset < randomDigitStr.length()){
                    //  在 offset位置(下标)插入随机生成的[0, 9]间一位数
                    randomDigitStr.insert(offset, random.nextInt(10));
                } else {
                    //  在数串末尾添加[0, 9]间一位数
                    randomDigitStr.append(random.nextInt(10));
                }
            }
        }
        return randomDigitStr.toString();
    }

    /*
     * 生成(获得)RandomUtil。BITS位随机数串
     */
    public static String getNBitRandomDigit(){
        return getNBitRandomDigit(BITS);
    }
    
    public static void main(String[] args) {
        for(int i = 50; i<= 150; ++i){
            System.out.println(getNBitRandomDigit(i));
        }
    }
}

 

分享到:
评论

相关推荐

    随机生成11位数字

    根据给定的信息,我们可以深入探讨如何在编程环境中生成指定...通过以上分析和改进,我们不仅能够准确地生成所需的11位随机数字串,还确保了代码的高效性和适用性。这对于IT行业的开发人员来说是非常有价值的技能之一。

    java随机生成数字和字母

    1. **生成随机数字**:可以通过修改ASCII码范围来生成随机数字。 2. **生成小写字母**:只需调整ASCII码范围至97到122之间。 3. **混合数字和字母**:可以结合生成数字和字母的方法,随机选择生成数字还是字母。 4. ...

    Java随机字符串生成器,可用于生成随机密码,密约等场景,支持字符范围配置(如只允许数字,只允许字母,只允许数字字母,特殊字符等混合配置)

    Java随机字符串生成器,可用于生成随机密码,加密算法密约(AES,RSA等)等场景,支持可选字符范围配置(如只允许数字,只允许字母,只允许数字字母,特殊字符等混合配置),即在选择的字符范围内去实现随机字符串...

    Java 生成随机字符串数组的实例详解

    Java生成随机字符串数组的实例详解是一种非常有用的编程任务,涉及到String、StringBuffer、List、泛型、Collections.sort()、foreach、Random等相关知识点。通过本实例详解,读者可以学到生成随机字符串数组的步骤...

    Java获取随机字符串

    给定的部分代码示例展示了如何使用`java.security.SecureRandom`类生成随机数字。下面是对这部分代码的详细解析: ```java public class RandomNum { // ...省略其他成员变量定义... public final void ...

    Java生成含字母和数字的6位随机字符串

    标题提到的"Java生成含字母和数字的6位随机字符串",就是指通过编程方式创建一个长度为6的字符串,其中包含大小写字母和数字的组合。下面我们将深入探讨如何实现这个功能。 首先,我们需要了解Java中生成随机数的...

    java随机生成10位数的字符串ID

    首先,我们需要创建一个MathUtils工具类,用于生成随机数字字符串: ```java public class MathUtils { private static final String DEFAULT_DIGITS = "0"; private static final String FIRST_DEFAULT_DIGITS =...

    随机生成10位数包含字母和数字

    本篇文章将详细解析如何通过Java语言实现一个功能,即随机生成包含字母和数字的10位随机字符串。 #### 核心需求分析 根据题目描述,我们需要实现的功能是生成一个由字母和数字组成的10位随机字符串。这里的字母只...

    随机生成8位字符串密码

    随机生成8位字符密码,包括1位特殊字符,1位数字,1位小写字母,1位大写字母,其余4位随机

    随机产生8位无重复数

    通过设置范围和种子,可以生成指定长度的数字串,如8位数。 2. **去除重复**:为了确保生成的随机数不重复,可以使用HashSet或数据库来存储已经生成过的随机数,每次生成新数时,都会先检查该数是否已存在,如果不...

    java 随机产生指定长度的用户名字母 数字格式

    下面我们将详细介绍如何利用Java来实现一个能够随机生成指定长度、包含字母和数字的用户名的方法。 #### 核心知识点 1. **Random 类的使用**:`java.util.Random` 是Java中的一个类,用于生成伪随机数。 2. **字符...

    java生成随机数(字符串)示例分享

    总结来说,这个示例展示了如何在Java中利用`Random`类生成随机字符串,以及如何根据需求自定义字符串的内容(大小写字母、数字等)。这样的功能在密码生成、数据模拟和其他需要随机性的情境中非常实用。

    java开发技术调用rendom函数,随机生成32位不重复的字符

    "Java开发技术调用Random函数,随机生成32位不重复的字符" 在Java开发技术中,生成随机数是非常常见的需求。例如,在注册用户账户时,需要生成一个随机的密码。在游戏开发中,需要生成随机数来决定游戏的结果。在...

    java随机产生四位验证码(相邻码不重复)两种算法实现

    在这个问题中,我们关注的是如何生成四位字符且无重复的验证码,以及如何进一步确保相邻字符不重复的实现方法。 1. 生成四位字符、整数组成的验证码(无重复码验证) 首先,我们需要一个包含所有可能字符的数组,...

    生产不重复19位随机数

    生产不重复19位随机数,测试1000000数据没重复

    java生成的随机验证码

    验证码是网络应用中常见的一种安全机制,用于防止自动...总的来说,Java生成随机验证码的过程涵盖了随机数生成、字符串处理、图像处理等多个编程领域。通过合理的设计和实现,可以创建出既安全又用户友好的验证码系统。

    java生成随机字符串的两种方法

    Java生成随机字符串的两种方法 Java生成随机字符串是 Java 中一个常见的应用场景,例如在注册用户时生成验证码、生成订单号、生成唯一标识符等。今天我们将为大家详细介绍 Java 生成随机字符串的两种方法。 方法一...

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

    生成的8位十六进制字符串在大多数情况下已经足够独特,但考虑到时间戳的精度,如果系统在同一秒内需要生成多个不重复的8位数字,可能需要结合其他策略,如添加进程ID、随机数或者序列号,以确保在极短时间内生成的ID...

    java生成随机密码

    ### Java生成随机密码知识点解析 #### 一、概述 在软件开发中,为了增强系统的安全性,经常需要生成随机密码或验证码。Java作为一种广泛使用的编程语言,提供了多种方式来实现这一功能。本文将详细介绍如何利用...

    java随机生成数字 验证码

    ### 使用Java生成随机数字和验证码 #### 1. 导入必要包 在文件的部分内容中,可以看到以下导入语句: ```java import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; ...

Global site tag (gtag.js) - Google Analytics