首  页 | 资讯中心 | 网络学院 | 天新汽车 | 天新手机 | 天新游戏 | 软件开发 | 考试认证
品 牌 机 | 笔 记 本 | 服 务 器 | 天新数码 - DC - DV - MP3 - MP4 - GPS - TV | 数字家庭
硬件 DIY - 主板 - CPU - 内 存 - 硬 盘 - 显示器 - 显卡 - 光驱 - 机箱 - 键鼠 - 网络设备
办公设备 | 打 印 机 | 扫 描 仪 | 投 影 仪 | 一 体 机 | 传 真 机 | 路 由 器 | 交 换 机
软件下载 | 驱动下载 | 游戏下载 | 源码下载 | 教程下载 | 站长在线 | 产品中心 | 报价中心
开发首页 | 开发语言 | .Net开发 | Java开发 | Web开发 | 移动开发 | 游戏开发 | 数据库开发 | 企业开发 | 操作系统 | 软件工程
VB VC Delphi PB BCB C++ - ASP.net C# VB.net - J2EE J2SE J2ME EJB - ASP PHP JSP CGI - MSSQL Oracle DB2 MySQL - CodingLife
  .Net开发首页 | ASP.NET | C# | VB.NET | VC++.NET | VS.NET | ADO.NET | Framework | Web Service | Remoting | .NET XML
  您现在的位置:天新网 > 软件开发 > .Net开发 > ASP.NET
ASP.net随机数应用实例
http://dev.21tx.com 2004年12月07日

每日文章精萃
.Net:体验Visual Studio 2005之类设计器 Java:使用 JSP 技术和 JDBC 技术访问基
ASP:ASP教程:第十三篇 数据库查询语言(2 PHP:多php服务器实现多session并发运行
JSP:通过JSP的预编译消除性能瓶颈 CGI:CGI教程(10)CGI 规范
VB:如何在VB6.0中创建和使用文本资源文 VC:用VC++实现Windows 2000/XP下的休眠

1 2 下一页

大家可能都用过Chinaren的校友录,不久前它的留言簿上加了一个防止灌水的方法,就是系统每次产生一个由随机的数字和字母组成的图片,每次留言必须正确地输入这些随机产生的字符,否则不能添加留言。这是一个很好的防止恶意攻击的方法,其核心的技术就是如何产生随机数。Chinaren网站是使用PHP实现的,而我们可以充分利用ASP.net的强大功能很轻易地实现。


在.net Framework中提供了一个专门用来产生随机数的类System.Random,使用这个类时必须导入System命名空间。当然,命名空间System在每个ASP.NET页面中都是自动导入的,所以我们可以直接使用这个类。


对于随机数,大家都知道,计算机不可能产生完全随机的数字,所谓的随机数发生器都是通过一定的算法对事先选定的随机种子做复杂的运算,用产生的结果来近似的模拟完全随机数,这种随机数被称作伪随机数。伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。伪随机数的选择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要。如果随机种子一样,那么同一个随机数发生器产生的随机数也会一样。一般地,我们使用同系统时间有关的参数作为随机种子,这也是.net Framework中的随机数发生器默认采用的方法。



我们可以使用两种方式初始化一个随机数发生器:


第一种方法不指定随机种子,系统自动选取当前时间作为随机种子:


Random ro = new Random();



第二种方法可以指定一个int型参数作为随机种子:



int iSeed=10;


Random ro = new Random(10);


之后,我们就可以使用这个Random类的对象来产生随机数,这时候要用到Random.Next()方法。这个方法使用相当灵活,你甚至可以指定产生的随机数的上下限。


不指定上下限的使用如下:


int iResult;


iResult=ro.Next();



下面的代码指定返回小于100的随机数:


int iResult;


int iUp=100;


iResult=ro.Next(iUp);


而下面这段代码则指定返回值必须在50-100的范围之内:



int iResult;


int iUp=100;


int iDown=50;


iResult=ro.Next(iDown,iUp);



除了Random.Next()方法之外,Random类还提供了Random.NextDouble()方法产生一个范围在0.0-1.0之间的随机的双精度浮点数:



double dResult;


dResult=ro.NextDouble();



另外一个与Random.NextDouble()方法相似的方法是Random.Sample(),它跟Random.NextDouble()方法唯一的区别在于访问级别,我们可以看看它们的原始声明:



protected virtual double Sample();


public virtual double NextDouble();



Random.Sample()方法是保护方法,只允许子类的对象访问,而Random.Sample()方法则可以看作是Random.Sample()的公开版本。一般地,用户在Random的子类中重写Sample()方法来得到更一般的分布。


这个例子中,我们使用Random.Next()方法来产生随机数。


下面这个函数是这个例子的核心,我们利用他来产生一个随机的int数组:


private int []GetRandomArray(int Length,int Up,int Down){ int iFirst=0; int []rtArray=new Int32[Length]; Random ro=new Random(Length*unchecked((int)DateTime.Now.Ticks)); iFirst=ro.Next(Up,Down); rtArray[0]=iFirst; for(int i=1;i


读者或许都注意到了,我们采用了一种相当麻烦的方式来产生这个随机数组,为什么不简单地使用如下代码呢?请先看下面代码,这里我们使用了系统时间作为随机种子,连续获取两个随机数,并且将其输出:


< %@ Page Language="C#" Debug="true" Trace="false" TraceMode="SortByCategory"% >< % @Import namespace="System" % >
< script language=C# runat=server >
public void Page_Load(object sender,EventArgs e){ int re=0; int re1=0; GetRandomDefault(ref re); GetRandomDefault(ref re1); RandomNum.Text=re.ToString(); RandomNum.Text+=" "+re1.ToString();}private void GetRandomDefault(ref int re){ Random ro=new Random(unchecked((int)DateTime.Now.Ticks)); re=ro.Next(10,20);}private void GetRandomByInt(ref byte []re){ Random ro=new Random(); ro.NextBytes(re);}
< /script >
< html >
< head >
< title >随机数测试< /title >
< meta http-equiv="Content-Type" content="text/html; charset=gb2312" >
< /head >


< body bgcolor="#FFFFFF" text="#000000" >
< form runat=server >
< asp:Label id="RandomNum" runat=server / >


< /form >
< /body >
< /html >



下面是笔者机器上产生的结果的截图:



上一篇: 基于ASP.NET的自定义分页显示
下一篇: 用ASP.NET结合XML制作广告管理程序

1 2 下一页

编辑推荐
相关内容
·ASP.NET2.0+SQL Server2005构建多层应用
·ASP .NET中维持ViewState研究
·ASP.NET实现数字和字符相混合的验证码
·开发ASP.NET下的MP3小偷程序
·编写ASP.NET应用程序的十大技巧
·ASP.NET中使用表别名的多表查询
·ASP.NET开发员工业绩评测中心
·创建ASP.NET数据存储层
·创建用于ASP.NET的分页控件
·ASP.NET中编程杀死进程
·Barrier 实例 - 第一次用blog
·CMPP SP端 C# 实例
·演示水晶报表设计概念的官方示例报表列表
·最新官方水晶报表实例 - 报表,应用程序
·程序运行实例数量的控制——大全篇
·Oracle学习笔记
·触发器设计技巧与实例
·ASP.net中随机数应用实例(2)
·ASP.net中随机数应用实例(1)
·JAVA中动态性实例解释
最近更新
人气最热
·Asp.net(C#)给图片加上水印效果
·ASP.NET 2.0中隐藏listbox的某一项
·基于ASP.NET的自定义分页显示
·用ASP.NET结合XML制作广告管理程序
·使用ASP.NET程序来管理文件或目录的一种方
·ASP.NET 2.0中的登陆控件简介
·ASP.NET 2.0中的DataSource系列控件
·在ASP.NET程序中创建唯一序号
·利用ASP.NET 2.0创建自定义Web控件
·利用DataGrid编辑、修改、删除记录
·利用DataGrid编辑、修改、删除记录
·Asp.Net中使用水晶报表(中)
·DataGrid控件使用技巧
·ASP.NET的安装与运行环境
·Asp.Net中使用水晶报表(上)
·ASP.NET中使用TreeView控件
·一个功能齐全的DataGrid分页例子
·利用XML实现通用WEB报表打印
·ASP.NET中设计带事件定制控件
·XP 风格的可拖动列、可排序、可改变宽度的D

 
·[硬件]宽带路由低价出售 暑促热潮持续高温
·[数码]1.5英寸OLED屏 DEC中恒MP3新鲜上市
·[汽车][浙江]联网监控 高速路况如何司机全知
·[开发]修改屏保口令
·[资讯]陕西两位学者发现虎凤蝶新种和新亚种
·[游戏]《冰封王座》CESCC七彩虹ATI竞技精英网
·[本本]给惠普提个醒 联想“兵马”齐了!
·[办公]三菱发布三原色半导体激光投影技术
·[手机]时尚直板 索爱透明按键J300c仅售799元
·[考试]哈佛校长被指手法粗野?教员起义将其撵
·[学院]硬盘盒也能带来灾难?修复主板烧毁的US
·[娱乐]高尔夫游戏
 

关于我们 | 联系我们 | 广告服务 | 工作机会 | 版权声明 | 欢迎投稿 | 网站地图
Copyright © 2000-2008 , www.21tx.com , All Rights Reserved .
© 晨新科技 版权所有 Created by TXSite.net