`

产生随机不重复的数

 
阅读更多
/// <summary>  
/// 从1到33中任意选取不重复的6个随机数  
/// </summary>  
/// <returns></returns>  
public List<int> GenerateNumber1()  
{  
    //用于保存返回的结果  
    List<int> result = new List<int>(6);  
    Random random = new Random();  
    int temp = 0;  
    //如果返回的结果集合中实际的元素个数小于6个  
    while (result.Count < 6)  
    {  
        //在[1,34)区间任意取一个随机整数  
        temp = random.Next(1, 34);  
        if (!result.Contains(temp))  
        {  
            //如果在结果集合中不存在这个数,则添加这个数  
            result.Add(temp);  
        }  
    }  
    //result.Sort();//对返回结果进行排序  
    return result;  



/// <summary>  
/// 从1到33中任意选取不重复的6个随机数  
/// </summary>  
/// <returns></returns>  
public List<int> GenerateNumber2()  
{  
    //用于存放1到33这33个数  
    List<int> container = new List<int>(33);  
    //用于保存返回结果  
    List<int> result = new List<int>(6);  
    Random random = new Random();  
    for (int i = 1; i <= 33; i++)  
    {  
        container.Add(i);  
    }  
    int index = 0;  
    int value = 0;  
    for (int i = 1; i <= 6; i++)  
    {  
        //从[0,container.Count)中取一个随机值,保证这个值不会超过container的元素个数  
        index = random.Next(0, container.Count);//谢谢热心朋友指出这里的错误  
        //以随机生成的值作为索引取container中的值  
        value = container[index];  
        //将随机取得值的放到结果集合中  
        result.Add(value);  
        //从容器集合中删除这个值,这样会导致container.Count发生变化  
        container.RemoveAt(index);  
        //注意这一句与上面一句能达到同样效果,但是没有上面一句快  
        //container.Remove(value);  
    }  
    //result.Sort();排序  
    return result;  


public int[] GenerateNumber3()  
{  
    //用于存放1到33这33个数  
    int[] container = new int[33];  
    //用于保存返回结果  
    int[] result = new int[6];  
    Random random = new Random();  
    for (int i = 1; i <= 33; i++)  
    {  
        container[i - 1] = i;  
    }  
    int index = 0;  
    int value = 0;  
    for (int i = 0; i < 6; i++)  
    {  
        //从[1,container.Count + 1)中取一个随机值,保证这个值不会超过container的元素个数  
        index = random.Next(1, container.Length-1-i);  
        //以随机生成的值作为索引取container中的值  
        value = container[index];  
        //将随机取得值的放到结果集合中  
        result[i]=value;  
        //将刚刚使用到的从容器集合中移到末尾去  
        container[index] = container[container.Length - i-1];  
        //将队列对应的值移到队列中  
        container[container.Length - i-1] = value;  
    }  
    //result.Sort();排序  
    return result;  



分享到:
评论

相关推荐

    c# 求随机数组但不重复

    随机不重复,随机不重复,随机不重复,随机不重复,随机不重复,随机不重复,随机不重复,随机不重复,随机不重复,随机不重复,随机不重复,随机不重复,随机不重复,随机不重复,随机不重复,随机不重复,随机不...

    随机产生8位无重复数

    2. **去除重复**:为了确保生成的随机数不重复,可以使用HashSet或数据库来存储已经生成过的随机数,每次生成新数时,都会先检查该数是否已存在,如果不存在则添加并返回,否则继续生成新的随机数。 3. **数据库...

    Visual Studio 2005产生随机不重复的整数

    在编程领域,生成随机不重复的整数是一个常见的需求,特别是在模拟、测试或者游戏开发等场景。在Visual Studio 2005这个经典的开发环境中,我们可以利用C++或C#等语言来实现这一功能。下面将详细介绍如何在Visual ...

    js超简单实用随机产生1-100个数字不重复

    在JavaScript编程语言中,生成1到100之间不重复的随机数字是一项常见的需求,尤其在游戏、模拟或数据测试等场景中。本篇将详细解释如何实现这一功能。 首先,我们要理解JavaScript中的随机数生成。`Math.random()`...

    c#低开销随机不重复数

    以下是对"c#低开销随机不重复数"这一主题的详细解析。 1. **Random类的使用** C#中生成随机数的标准方式是使用`System.Random`类。创建一个Random对象,然后调用其`Next()`方法,可以得到一个指定范围内的随机整数...

    中奖问题,随机产生7个数,注意不能重复

    //从1到30个数中间随机产生7个数,注意不能重复,然后再从键盘上输入7个数, //对比7个数是否与随机数有相同的,如果有显示“中了几个号”, //如果中了7个号,显示一等奖;如果中了6个号,显示二等奖;如果中了5个...

    产生随机不重复短信验证码 10位

    在IT行业中,生成随机不重复的短信验证码是一项...总的来说,生成随机不重复的短信验证码是一个涉及随机数生成、字符串操作以及数据结构利用的问题。通过合理的设计和编程技巧,我们可以创建出高效且安全的验证码系统。

    随机不重复数字-代码

    根据给定的文件信息,我们可以总结出以下有关“随机不重复数字-代码”的知识点: ### 知识点一:数组的使用与初始化 在给定的代码片段中,可以看到一个整型数组`inta[5];`被声明。这表示创建了一个能够存储5个整数...

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

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

    VB生成不重复的随机数

    这种方法通过直接对原始数组进行打乱操作来生成不重复的随机数序列。 ```vb Private Sub Command1_Click() Randomize Timer Dim A(1 To 10) As Integer Dim B(1 To 8) As String Dim i As Integer, k As Integer...

    C++产生无重复的随机数组

    产生任意长度的随机数组,无重复。 任意时刻产生的数组都不相同, 保存成任意格式

    产生不重复随机数算法

    在IT领域,尤其是在软件开发与算法设计中,生成不重复的随机数是一个常见的需求,尤其在游戏、数据安全、统计抽样以及教育软件中的随机组题等场景下尤为重要。本文将深入探讨一种在Java中实现的高效算法,该算法能够...

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

    在Java编程中,生成十个不重复的随机数是一项常见的任务,尤其在进行数据模拟、测试或者游戏设计等场景。要实现这个功能,我们需要利用到Java的集合框架和Math类中的随机数生成方法。下面我们将详细讲解如何实现这个...

    易语言取不重复随机数

    但是,如果需要生成不重复的随机数,单纯依赖“随机数”命令是不够的,因为每次调用都可能产生相同的数字。 实现取不重复随机数的方法通常有两种:数组法和集合法。以下是这两种方法的具体实现: 1. **数组法**: ...

    生成不重复随机数的算法

    这种方法通过创建一个初始有序数组,然后使用随机交换的方式来生成不重复的随机数。 **示例代码**: ```java public static int[] randoms() { Random r = new Random(); int temp1, temp2; int send[] = {0, 1,...

    hashset产生不重复随机数

    利用hashset产生不重复随机数的函数,附含测试数据; 调用方法 int[] arr=noDup(max,num),max为最大的数,num为要产生的随机数个数

    C#生成2位或N位不重复字母数字组合

    在C#编程中,生成不重复的字母数字组合是一项常见的任务,特别是在密码生成、验证码创建或者唯一标识符的生产场景中。本篇文章将详细讲解如何使用C#来生成指定长度的不重复字母数字组合,包括两位及任意N位的情况。 ...

    randm_randm_Verilog产生伪随机数模块_

    伪随机数生成器(PRNG)并不像真正的随机数那样具有完全不可预测性,而是通过数学算法生成一系列看起来随机但实际上可重复的数字序列。在Verilog中实现PRNG,通常会用到移位寄存器和非线性反馈函数。下面我们将深入...

    产生20个不重复的随机数的代码

    在IT领域,生成不重复的随机数序列是一个常见的需求,尤其是在需要进行随机抽样、数据模拟或游戏开发等场景中。下面将详细解析如何通过编程实现这一目标,并深入探讨其背后的算法逻辑和技术要点。 ### 核心知识点:...

    C语言随机产生10个50~100的数

    在C语言中,生成随机数是一项常见的编程任务,特别是在各种模拟和游戏开发中。...这两种实现方式都可以从给定的压缩包文件"随机产生10个50~100的数法一.c"和"随机产生10个50~100的数法二.c"中找到。

Global site tag (gtag.js) - Google Analytics