mbtq

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C# 随机生成任意位数的卡号 无重复

        /// <summary>
        /// 得到卡号
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnsave_Click(object sender, EventArgs e)
        {
            string sql = "select cardNum from vipCard";
            DataSet ds = DBHelper.Query(sql);
            DataTable dt = ds.Tables[0]; //查询表中的所有卡号

            Random ra = new Random(unchecked((int)DateTime.Now.Ticks));
            int cardNum=0;
          int minValue=10000; //卡号下限
          int maxValue=99999; //卡号上限
            int randomNum = ra.Next(minValue, maxValue); //随机取数
            cardNum = GetCardNum(dt, randomNum, minValue, maxValue, ra); //得到卡号
            MessageBox.Show(cardNum.ToString());           
        }

        /// <summary>
        /// 判断生成的卡号是否重复
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="randomNum"></param>
        /// <param name="minValue"></param>
        /// <param name="maxValue"></param>
        /// <param name="ra"></param>
        /// <returns></returns>
        public int GetCardNum(DataTable dt, int randomNum, int minValue, int maxValue, Random ra)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (Convert.ToInt32(dt.Rows[i][0].ToString())==randomNum)   //重复再次调用
                {
                    randomNum = ra.Next(minValue, maxValue); //重新生成随机数
                    GetCardNum(dt,randomNum,minValue,maxValue,ra);
                }
            }
            return randomNum;
        }

posted on 2012-10-24 15:07  mbtq  阅读(582)  评论(0编辑  收藏  举报