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


    最基本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 是输入验证码的,加上了验证码,防止多次尝试

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

  • 相关阅读:
    <li>标签在ie6下的上下间隔的BUG解决办法
    win7 瘦身 减肥 记录!
    学习系统封装半年经验总结!
    DIV 类似 hover 悬停效果 鼠标移动上去变化
    解决 WIN7 部署 安装驱动包时出现的驱动签名提示 办法!
    Windows 7 瘦身大全 系统减肥 轻松 瘦身 减肥 3个G
    JS 判断 取 当前系统类型 可用来定义某些WIN7系统和XP系统下字体区别
    JS 判断 当前浏览器类型
    EasyBoot常用的命令
    Win7封装保持任务栏锁定项不变的解决方法
  • 原文地址:https://www.cnblogs.com/pyman/p/1228201.html
Copyright © 2020-2023  润新知