追求新生活 名字2008

活着的意义

对产生随机数的理解--有应用例子在登陆页面

最基本Random ro = new Random();  TextBox2.Text=ro.Next ().ToString ();就可以获得,这里默认是系统时间做为随机种子,如果指定一个int类型的数作为种子,如:
        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 是输入验证码的,加上了验证码,防止多次尝试

如果加上图象控件就实现了网上常见的功能了。不是很爽吗,我认为学到知识一定要有运用才有进步的,要不,顶什么用呢?

posted on 2008-06-23 14:57  pyman  阅读(353)  评论(0编辑  收藏  举报

导航