我现在在vs 2005开发环境下用C#编写一个抽奖程序
请问如果我要随机抽取1到100之间的5个整数,我该如何利用随机函数random()去编写呢?

解决方案 »

  1.   

            //// <summary>
            /// 使用RNGCryptoServiceProvider 做种,可以在一秒内产生的随机数重复率非常
            /// 的低,对于以往使用时间做种的方法是个升级
            /// </summary>
            /// <returns></returns>
            public static int GetNewSeed()
            {
                byte[] rndBytes = new byte[4];
                RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
                rng.GetBytes(rndBytes);
                return BitConverter.ToInt32(rndBytes,0);
            }        /// <summary>
            /// 取得指定范围内的随几数
            /// </summary>
            /// <param name="startNumber">下限数</param>
            /// <param name="endNumber">上限数</param>
            /// <returns>int</returns>
            public static int GetRandomNumber(int startNumber, int endNumber)
            {
                Random objRandom = new Random(GetNewSeed());
                int r = objRandom.Next(startNumber,endNumber);
                return r;
            }
      

  2.   

    要在一段数字区间内随机生成若干个互不相同的随机数,比如在从1到20间随机生成6个互不相同的整数。主要是下面两个函数getRandomNum与getNum:public int[] getRandomNum(int num,int minValue,int maxValue){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]=getNum(arrNum,tmp,minValue,maxValue,ra); //取出值赋到数组中}return arrNum;}public int getNum(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); //重新随机获取。getNum(arrNum,tmp,minValue,maxValue,ra);//递归:如果取出来的数字和已取得的数字有重复就 重新随机获取。}n++;}return tmp;}
      

  3.   

    Random random = new Random(unchecked((int)DateTime.Now.Ticks));
                List<int> list = new List<int>(5);
                for (int i = 0; i < 5; i++)
                {
                    int temp = random.Next(1, 35);
                    if (list.Contains(temp)) { --i; continue; }//回滚
                    else list.Add(temp);
                }