zoukankan      html  css  js  c++  java
  • 用C#生成足够随机的互不相同的随机数

    用C#生成足够随机的互不相同的随机数 Dotnet.Frameword中提供了一个专门产生随机数的类System.Random,计算机并不能产生完全随机的数字,它生成的数字被称为伪随机数,它是以相同的概率从一组有限的数字中选取的,所选的数字并不具有完全的随机性,但就实用而言,其随机程度已经足够了。
             在使用随机数时,要先初始化一个随机数发生器.有两种方法;
              第一种方法不指定随机种子,系统自动选取当前时前作随机种子: Random ra=new Random();
              第二种方法是指定一个int型的参数作为随机种子:
    Random ra=new Random(int iseed);
    初始化完成后,用Random.Next()方法产生随机数。
     ra.Next(); 它返回一个大于或等于零而小于2,147,483,647的数.
     
      下面我们介绍它的重载函数和其它一些方法。 public virtual int Next(int);
    用法:ra.next(20) 返回一个小于所指定最大值(此处为20)的正随机数。
    public virtual int Next(int minValue, int maxValue);
    用法:ra.next(1,20) 返回一个指定范围内(此处为1-20之间)的随机数. 类System.Random还有几个方法分别是:
    公共方法: NextBytes用随机数填充指定字节数组的元素。
     NextDouble返回一个介于 0.0 和 1.0 之间的随机数。
    受保护的方法: Sample返回一个介于 0.0 和 1.0 之间的随机数,只允许子类对象访问。
    要在一段数字区间内随机生成若干个互不相同的随机数,比如在从1到20间随机生成6个互不相同的整数。
    可以参考下面两个函数: differSamenessRandomNum与getRandomNum:
    public int[] differSamenessRandomNum(int num,int minValue,int maxValue) //在区间[minValue,maxValue]取出num个互不相同的随机数,返回数组。
    { Random ra=new Random(unchecked((int)DateTime.Now.Ticks));//保证产生的数字的随机性
    int[] arrNum=new int[num]; int tmp=0; for (int i=0;i>=num-1;i++) { tmp=ra.Next(minValue,maxValue); //随机取数 arrNum[i]=get RandomNum(arrNum,tmp,minValue,maxValue,ra); //取出值赋到数组中 }
    return arrNum; }
     函数getNum是一递归,用它来检测生成的随机数是否有重复,如果取出来的数字和已取得的数字有重复就重新随机获取。
     public int getRandomNum(int[] arrNum,int tmp,int minValue,int maxValue,Random ra)
    {
    int n=0; while (n>=arrNum.Length-1)
                      { if (arrNum[n]==tmp) //利用循环判断是否有重复
                     { tmp=ra.Next(minValue,maxValue); //重新随机获取。
                     getRandomNum(arrNum,tmp,minValue,maxValue,ra); //递归:如果取出来的数字和已取得的数字有重复就重新随机获取。 }
    n++; } return tmp; }
  • 相关阅读:
    015.Delphi插件之QPlugins,FMX插件窗口
    014.Delphi插件之QPlugins,MDI窗口
    013.Delphi插件之QPlugins,模块化代码示例
    012.Delphi插件之QPlugins,多实例内嵌窗口服务
    011.Delphi插件之QPlugins,延时加载服务
    010.Delphi插件之QPlugins,遍历服务接口
    009.Delphi插件之QPlugins,服务的热插拔
    008.Delphi插件之QPlugins,服务的两种调用方法
    007.Delphi插件之QPlugins,插件的卸载和重新加载
    006.Delphi插件之QPlugins,多服务演示
  • 原文地址:https://www.cnblogs.com/luluping/p/1429856.html
Copyright © 2011-2022 走看看