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;
}