随机不重复函数

来源:互联网 发布:攻击服务器软件 编辑:程序博客网 时间:2024/05/24 06:19

List<GrouponCL.DbModel.Tags> zoltarg = new GrouponCL.DbMethod().GetTagList(conn,100);

            int tarsl = 0, mined = 0;
            if (zoltarg.Count > 0)
                mined = 1;

            if (zoltarg.Count < 40)
                tarsl = zoltarg.Count;
            else
                tarsl = 40;

            int[] stag = DLL.CommFun.TtGetRandomArray(mined, zoltarg.Count);
            
            city.AppendLine("<div class=\"tao_2 s_12\">");
            for (int i = mined; i < tarsl; i++)
            {
                city.AppendLine(" <a href=\"/tag-" + zoltarg[stag[i] - 1].tagkey + "\" title=\"" + zoltarg[stag[i] - 1].tagname + "团购\">" + zoltarg[stag[i] - 1].tagname + "</a> ");                
            }

 

----------------------------------------------

 DLL.CommFun.TtGetRandomArray

 

   public static int[] TtGetRandomArray(int min, int max)
        {
            //返回一个介于 min 与 max 之间(包括 min & max)的数的乱序数组
            //要几个此范围内的随机数,就取此数组的前几位就得了
            //如果参数 min > max ,将得到一个 System.OverflowException

            int times = 2;
            int ttNumber = max - min + 1;
            int[] a = new int[ttNumber];

            for (int i = 0; i < ttNumber; i++) a[i] = min + i;
            for (int j = 0; j < times; j++)
            {
                for (int i = ttNumber - 1; i > 0; i--)
                {
                    int temp = 0;
                    int randomNum = TtGetRandom(0, max * 3, i) % i;
                    temp = a[i];
                    a[i] = a[randomNum];
                    a[randomNum] = temp;
                }
            }
            return a;
        }

        public static int TtGetRandom(int min, int max, int chaosSeed)
        {
            Random rand = new Random(unchecked(chaosSeed * (int)DateTime.Now.Ticks));
            return rand.Next(min, max);
        }

0 0