c#中不重复随机数的具体应用-抽奖
  int i = 1;//抽奖人员编号,所有人员部分区域
                Random sjs = new Random(DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day +
                     DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second +
                     DateTime.Now.Millisecond);
               
                /*
                 * var sxsj = from aa in nzywda.ygcjs where aa.cjdd==cjdd && aa.zt==null && aa.nd==nd && aa.bz==null

                           select aa; //对每次都重新分配随机号,随机性更大一些
                int rs = sxsj.Count();

                // 分配随机号码
                if (rs > 0)
                {
                    foreach (var kk in sxsj)
                    {

                        kk.sjh = sjs.Next(1, rs + 1);
                    }
                    nzywda.SaveChanges();
                }
                 */
                int rs = cxgxcsh.Count();
                HashSet<int> uniqueNumbers = new HashSet<int>();//里面的元素不能重复
                while (uniqueNumbers.Count < rs)
                {
                    int number = sjs.Next(1, 10*rs + 1);
                    uniqueNumbers.Add(number);
                }
                int[] bcfsjs = new int[rs];//不重复随机数数组
                int j = 0;
                foreach (var number in uniqueNumbers)
                {
                    bcfsjs[j] = number;
                    j++;
                }
                if (rs > 0)
                {
                    foreach (var kk in cxgxcsh)
                    {
                        kk.zt = null;
                        kk.bz = null;
                        kk.bh = i;
                        kk.sjh = bcfsjs[i - 1];
                       i++;
                        // kk.sjh = sjs.Next(1, rs + 1);
                        //不重复随机数
                      
                    }
                }
                   
                nzywda.SaveChanges();
                System.Threading.Thread.Sleep(200);
                //一次性产生随机号更快更科学,后续对sjh排序即可

渝公网安备 50011902000225号

渝ICP备18008233号-1