一返回指定范围的不重复随机数类

原创 2007年09月28日 17:04:00

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;

/// <summary>
/// Summary description for RandomCls
/// </summary>
public class RandomCls : Random
{

    private ArrayList element = null;
    private int min;
    private int max;

    public RandomCls(int min, int max)
    {
        this.min = min;
        this.max = max;
        element = new ArrayList();
    }

    public void add(int index)
    {
        if (!element.Contains(index))
            element.Add(index);
    }

    public object this[int index]
    {
        get { return element[index]; }
        set { element[index] = value; }
    }

    public override int Next()
    {
        return base.Next(this.min, this.max);
    }

    public int getDifferenceRandomNumber()
    {
        int number ;
        do
            number = this.Next(min, max);
        while (element.Contains(number) && element.Count < max - 1);
        add(number);
        return number;
    }

    public int[] getArrayRandom()
    {
        int[] temp = new int[max - min];
        for (int i = 0; i < max - min; i++)
        {
            temp[i] = getDifferenceRandomNumber();
        }
        return temp;
    }
}

 

调用:

        int[] array = new int[100];
        RandomCls randomUsr = new RandomCls(1, 100);
        array = randomUsr.getArrayRandom();


相关文章推荐

算法--生成m个指定范围的不重复随机数的三种方法分析(Java实现)

Q题目如何产生m个在0-N范围内的无重复的随机数(不包含N)

Math生成指定范围内不重复的随机数方法

java的Math生成指定范围内不重复的随机数方法       利用Math生成随机数的时候会产生重复数据,当指定范围的时候,比如生成33以内的指定的6个数时,生成的数据不免有重复,当生成的随机数目越...
  • xwjwh
  • xwjwh
  • 2013年11月10日 19:47
  • 806

【Java】利用Collections类下的shuffle洗牌方法改进在一定的范围内产生不重复的随机数

上次在《【Java】在一定的范围内产生不同的随机数》(点击打开链接)上所提到的方法,尽管已经解决了一定范围内产生不同随机数的问题,运行速度已经可以的,至少不会弄很久都弄不好,其实利用Collectio...

如何高效产生m个n范围内的不重复随机数(m<=n)

如何产生不重复的随机数?最容易想到的方法,是逐个产生这些随机数,每产生一个,都跟前面的随机 数比较,如果重复,就重新产生。这是个很笨的方法,且比较次数呈线性增长,越往后次数越多。其实这些 比较是多余的...

java生成不重复的随机数【某个范围0-10】或者【某个数组int[1,3,56,14,26,22,17]】

【java】废话不多说直接贴代码: /** * 随机指定范围内N个不重复的数 * 最简单最基本的方法 * @param min 指定范围最小值 * @param max 指定...
  • xb12369
  • xb12369
  • 2015年03月27日 11:36
  • 3106

产生不重复的随机数(范围:1000000-9999999)

因为《编程珠玑》的第一章是对文件排序,首先需要产生是一些不重复的随机数。关于产生不重复的随机数,可以用Hashtable的方式,即随机产生一个数就去检测,列表中这个数是否已经存在,然而这种非常耗时。有...
  • woaixfj
  • woaixfj
  • 2015年03月29日 20:48
  • 666

算法:如何高效产生m个n范围内的不重复随机数(m<=n)

算法:如何高效产生m个n范围内的不重复随机数(m
  • shi0090
  • shi0090
  • 2014年12月02日 07:22
  • 4733

java常用类解析十一:Random类(Math.random())生成指定范围的随机数或字符

package mine.util.others; import java.util.Random; public class GetRandom { // 返回ch1和ch2之间(包括ch1,...

Python 产生特定范围内不重复多个随机数的两种方法

首先想到的递归的方法,然后才发现Python中居然已经提供了此方法的函数,可以直接使用。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一返回指定范围的不重复随机数类
举报原因:
原因补充:

(最多只允许输入30个字)