`
dragonhunter
  • 浏览: 33417 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

简单的不重复随机数生成

    博客分类:
  • java
阅读更多

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public class RandomUtil {
    public static char[] lower = "abcdefghijklmnopqrstuvwxyz".toCharArray();
    public static char[] upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
    public static char[] num = "0123456789".toCharArray();
    public static char[] letter = org.apache.commons.lang.ArrayUtils.addAll(lower,upper);
    public static char[] all = org.apache.commons.lang.ArrayUtils.addAll(letter,num);

    public static int LOWER_TYPE = 0;
    public static int UPPER_TYPE = 1;
    public static int NUMBER_TYPE = 2;
    public static int LETTER_TYPE = 3;
    public static int ALL_TYPE = 4;
    public static Map<Integer,char[]> map = new HashMap(){{
        put(LOWER_TYPE,lower);
        put(UPPER_TYPE,upper);
        put(NUMBER_TYPE,num);
        put(LETTER_TYPE,letter);
        put(ALL_TYPE,all);
    }};

    public static void main(String[] args) {
        System.out.println(RandomUtil.randomNoRepeatString(44, ALL_TYPE));
        System.out.println("finish");
    }

    public static String randomNoRepeatString(int total,int type){
        Object o = map.get(type);
        char[] array = (char[])o;
        if(array == null){
            throw new RuntimeException("type is error");
        }
        if(total > array.length){
            throw  new RuntimeException("total is too big , must <="+array.length);
        }
        char[] seq = array;
        char[] output = new char[total];
        Random random = new Random();
        int end = array.length - 1;
        for (int i = 0; i < total; i++)
        {
            int num = random.nextInt(end + 1);
            output[i] = seq[num];
            seq[num] = seq[end];
            end--;
        }
        StringBuffer sb = new StringBuffer();
        for(int i = 0;i < total;i++){
            sb.append(output[i]);
        }
        return sb.toString();
    }
}

分享到:
评论

相关推荐

    易语言取不重复随机数

    在易语言中,生成不重复随机数是一项常见的需求,特别是在游戏开发、数据分析或者算法设计等场景。本文将深入探讨如何在易语言中实现取不重复随机数的功能。 首先,我们需要了解易语言中的随机数生成函数。在易语言...

    VB生成不重复的随机数

    根据提供的标题、描述以及部分代码内容,我们可以总结出在Visual Basic (简称VB)环境中生成不重复随机数的主要方法。此技术常用于各种场景,比如彩票系统、抽奖程序或需要无重复随机选择的应用。 ### 一、基本原理 ...

    VBA生成不重复的随机数源码.txt

    VBA生成不重复的随机数源码.txt

    VB.NET生成不重复的随机数

    在VB.NET编程环境中,生成不重复的随机数是一项常见的需求,尤其在进行模拟、测试或者游戏开发时。...通过以上讨论,你应该能理解如何在VB.NET中实现不重复随机数的生成,并可以根据实际项目需求进行相应的调整。

    取不重复随机数.rar

    不过,这种方法并不适用于需要精确无误的不重复随机数生成场景。 4. **哈希集合/字典**: 在内存允许的情况下,使用哈希集合(Python的`set`或Java的`HashSet`)或字典(Python的`dict`)记录已生成的随机数。每次...

    易语言取不重复随机数.rar

    通过这个压缩包中的“易语言取不重复随机数”资源,你可以学习到如何在易语言环境中实现这一功能,并结合实践进一步理解随机数生成和数据结构的应用。无论是初学者还是有一定编程基础的开发者,这都是一个有价值的...

    生成指定随机数不重复的例子(可用)

    总结来说,这个例子提供了一种在Java中生成指定范围内不重复随机数的方法,通过结合`Random`类和集合数据结构实现。在myEclipse环境下,只需几步简单操作,即可运行并测试这段代码。对于开发者来说,理解和掌握这种...

    随机数生成器

    4. **随机数的质量**:一个高质量的随机数生成器应该具备以下特点:均匀分布(所有可能的结果出现的概率相同)、不可预测性和不可重复性。随机数生成器的质量对于其应用至关重要,尤其是在安全和科学计算方面。 5. ...

    生成不重复随机数的算法

    ### 生成不重复随机数的算法 在许多应用领域中,比如在线考试系统、游戏开发或是数据处理等场景,生成不重复的随机数是一项非常重要的技术。本文将详细介绍几种不同的方法来实现这一功能,并通过具体的Java代码示例...

    java生成十个不重复的随机数

    System.out.println("生成的十个不重复随机数为:"); for (int number : uniqueNumbers) { System.out.println(number); } } } ``` 在这个代码中,我们创建了一个`HashSet`来存储生成的随机数,然后在一个循环...

    VB.NET生成1-10不重复随机数

    在VB.NET编程环境中,生成1-10之间不重复的随机数是一项常见的需求,这...以上就是关于“VB.NET生成1-10不重复随机数”的核心知识点,通过理解并实践这些内容,你可以熟练地在VB.NET中生成满足特定条件的随机数序列。

    随机数生成_随机数生成_随机数生成_

    此外,`random.shuffle(x)`用于对列表x进行原地洗牌,`random.sample(population, k)`可无放回地从总体population中抽取k个不重复的元素。 对于更高级的需求,如加密或科学研究,Python还提供了`numpy.random`模块...

    Java中不重复随机数的生成与分析.pdf

    Java中不重复随机数的生成与分析 Java 中不重复随机数的生成与分析是软件开发中的一个重要问题。随机数以其不确定性和偶然性等特点,因此在软件开发中得到了广泛应用。例如,在软件系统的测试中,用于产生具有普遍...

    快速生成特定区间内的不重复随机数(随机打乱区间元素顺序)

    在编程领域,生成特定区间内的不重复随机数是一项常见的任务,尤其在模拟、游戏开发、数据分析等场景中。本文将详细探讨如何通过移位和逻辑运算实现这一目标,以达到高效且准确的效果。 首先,我们要明确一点:生成...

    易语言源码易语言取不重复随机数.rar

    在“易语言源码易语言取不重复随机数.rar”这个压缩包中,我们关注的核心知识点是如何在易语言中生成不重复的随机数。 在易语言中,生成随机数通常使用“随机数发生器”命令,它位于“系统”类别下。该命令可以生成...

    Java生成不重复的任意位随机数

    巧用Java实现得到任意位永不重复的随机数,很经典的代码!

    .NET生成不重复的随机数

    这段代码会打印出1到10之间的不重复随机数。 值得注意的是,这种方法虽然简单,但当需要生成的随机数数量非常大时(如百万级别),性能可能会成为问题,因为频繁地在集合中添加和删除元素会有一定的开销。在这种...

    用C++写的随机数生成器(含源代码)

    在本文中,我们将深入探讨如何使用C++编程语言创建一个随机数生成器。这个生成器允许用户指定随机数的范围和需要生成的个数。在C++中,生成随机数是一项基本任务,常用于各种应用,如模拟、游戏、测试等。 首先,...

    sp800_90c_second_draft.pdf 随机数生成器标准 NIST

    - 给出了如何评估随机数生成器的随机性和不可预测性的指导; - 描述了如何在不同硬件和软件平台上实现和测试随机数生成器; - 讨论了对随机数生成器进行随机性测试的统计方法; - 提供了确保随机数生成器安全性的...

    产生1到N的不重复随机数

    在编程领域,生成1到N的不重复随机数是一个常见的需求,这在各种场景中都有应用,例如模拟抽奖、创建随机测试数据或者在游戏中分配资源等。这个任务涉及到两个主要的知识点:随机数生成和数组去重。 首先,我们来...

Global site tag (gtag.js) - Google Analytics