对产生随机数的理解--有应用例子在登陆页面
int iSeed=10;
Random ro = new Random(10);
long tick = DateTime.Now.Ticks;
Random ran = new Random((int)(tick & 0xffffffffL) | (int) (tick >> 32));
TextBox3.Text =ran.Next ().ToString ();
这样产生的的随机数就99%不相同.
如果保证100%不相同,可以利用递归算法递归,用它来检测生成的随机数是否有重复,如果取出来的数字和已取得的数字有重复就重新随机获取。先定义函数getNum();
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;
}
再到一个button的应用
private void Button1_Click(object sender, System.EventArgs e)
{
Random ra=new Random(unchecked((int)DateTime.Now.Ticks));
int[] arrNum=new int[10];
int tmp=0;
int minValue=130000000;
int maxValue=139999999;
for (int i=0;i<10;i++)
{
tmp=ra.Next(minValue,maxValue); //随机取数
arrNum[i]=getNum(arrNum,tmp,minValue,maxValue,ra); //取出值赋到数组中,这里产生了10个随机数
}
Response.Write(arrNum[1]); //这里调用arrNum[1]
TextBox1.Text=arrNum[2].ToString() ; //这里调用arrNum[2]看看结果
}
讲个简单的应用例子:
一般登陆的时候,输入验证码,我们利用随机数产生前四位
void get_yanzheng_ma() //定义好
{
Random ro = new Random();
Label8.Text = ro.Next().ToString().Substring(0, 4);
yanzheng_ma = Label8.Text;
}
在pageload的事件中
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
OleDbConnection conn = data.Acce_Conn();
conn.Open();
OleDbCommand cmd = new OleDbCommand("select distinct zhen from school_data ", conn);
OleDbDataReader reader = cmd.ExecuteReader();
zhen.DataSource = reader;
zhen.DataTextField = "zhen";
zhen.DataValueField = "zhen";
zhen.DataBind();
conn.Close();
ListItem default_selected = new ListItem();
default_selected.Text = "请选择";
default_selected .Value ="00";
default_selected .Selected =true ;
zhen.Items.Add(default_selected ); //以上是系统需要做的事情
get_yanzheng_ma();//调用随机码函数
}
还需要定义个全局变量在该页面
public static string yanzheng_ma;
如果有需要,则还可以添加个button更改验证码
protected void Button2_Click(object sender, EventArgs e)
{ get_yanzheng_ma();
}
真正应用时候就看下面
if (data.LoginCheck_fromdb(Login1.UserName, Login1.Password, "0", "school_data") == true && yanzheng_ma ==TextBox1 .Text )//TextBox1 .Text 是输入验证码的,加上了验证码,防止多次尝试
如果加上图象控件就实现了网上常见的功能了。不是很爽吗,我认为学到知识一定要有运用才有进步的,要不,顶什么用呢?