C#的一个小有难度的问题。。请高手帮忙。小弟无尽感激(18)--验证码的随机产生

来源:百度知道 编辑:UC知道 时间:2024/07/09 04:40:40
如下是小弟在图书馆看到一段随机产生验证码的代码。。当小北将原代码复制到控制台运行时,原代码却出了不少错误,小弟不知怎样改。。。小弟也有很多不明白语句。(基本上明白的都写出来了,还有那些不明白的地方。)

using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
public string RandomNum(int Len)
{
string str = "0,1,2,3,4,5,6,7,8,9,";
str += "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,";
str += "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
string[] s = str.Split(new char[] { ','});//将字符串拆分成字符串数组
string strNum = "";
int tag = -1;//用于记录上一个随机数的值,避免产生两个重复值
Ra

rnd = new Random(i*tag*unchecked((int)DateTime.Now.Ticks));//这里不明
unchecke()不检测一出
DateTime.Now.Ticks 转换成整形 可能会溢出 前面加unchecked 就是不理会是否溢出
random()参数就是一个随机数种子 这一句就是利用时间的ticks作为种子产生随机数

int rndNum = rnd.Next(61);//这里不明白

random.next(最大值) ,所以这里是产生一个不超过61的随机数

if (tag != -1 && tag == rndNum)//这里不明白
就是验证随机数不能相同 然后产生下一个随机数

这是个递归调用啊

做个验证码 还用这么罗嗦吗 服了

第一点,你的这程序是asp.net使用的,在控制台上web等要加入引用

不明白1,使用时间*第几位*标志位作为种子得到随机数,其中使用unchecked来取消整型算术运算和转换的溢出检查
不明白2,此处为得到0到61之间的随机数(int型)
不明白三,就是上次数不是-1且与本次相等就返回以1为长度递归

[原创]易学网图片验证码设计与使用(C#原代码)
http://hi.baidu.com/jonnysuen/blog/item/be8df61297a35529dc54015b.html

using System;
using System.Data;
using System.Configuration;

namespace main
{
class Program
{
static