ie421.NET

面对技术,你别无选择,.NET世界是如此精彩,而我们要做的就是:Thinking More

博客园 首页 新随笔 联系 订阅 管理
计算机不可能产生完全随机的数字,ASP.NET中的随机数发生器都是通过一定的算法对事先选定的随机种子做复杂的运算,用产生的结果来近似的模拟完全随机数,这种随机数被称作伪随机数,Ststem.Random表示伪随机数生成器。

    伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。

    伪随机数的选择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要。如果随机种子一样,那么同一个随机数发生器产生的随机数也会一样。一般地,我们使用同系统时间有关的参数作为随机种子,这也是 .net Framework 中的随机数发生器默认采用的方法。

    一、初始化伪随机数发生器

    我们可以采用系统时间为随机种子的方式来初始化伪随机数生成器,如:
    Random ro=new Random();
    或者
    Random ro=new Random(unchecked((int)DateTime.Now.Ticks));

    也可以指定一个随机种子,如:
    Random ro=new Random(10);

    二、产生需要的随机数

    为了方便表述和演示,icech在这里直接在代码中说明产生各类随机数的方法:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace WebApplication1
{
 /// <summary>
 /// WebForm1 的摘要说明。
 /// </summary>
 public class WebForm1 : System.Web.UI.Page
 {
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   // 初始化伪随机数发生器
   Random ro=new Random(unchecked((int)DateTime.Now.Ticks));

   // 方法1:指定随机数上下限,产生上下限中的随机整数
   String RoInt=ro.Next(1,20).ToString();
   Response.Write("RoInt="+RoInt+"<br>");

   // 方法2:返回系统时间作为随机种子的随机整数
   String RoInt2=ro.Next().ToString();
   Response.Write("RoInt2="+RoInt2+"<br>");

   // 方法3:指定最大值非负随机整数
   String RoInt3=ro.Next(10).ToString();
   Response.Write("RoInt3="+RoInt3+"<br>");

   // 方法4:生成0.0和1.0之间的随机数
   String RoDouble=ro.NextDouble().ToString();
   Response.Write("RoDouble="+RoDouble+"<br>");

   // 方法5:用随机数填充指定字节数组
   // 字节数组的每个元素均设置为
   // 一个大于或等于零而小于或等于 MaxValue 的随机数
   // MaxValue = 255
   Byte[] b = new Byte[5];
   ro.NextBytes(b);
   for (int i = 0; i < 5; i++)
   {
    Response.Write("RoBytes"+i+"="); 
    Response.Write(b[i]+"<br>");
   }

  }

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.Load += new System.EventHandler(this.Page_Load);
  }
  #endregion
 }
}

    三、产生随机数的结果

    这里产生出一组随机数,大家参考一下他们的格式。

 RoInt=13
 RoInt2=522075042
 RoInt3=2
 RoDouble=0.800674877036677
 RoBytes0=91
 RoBytes1=15
 RoBytes2=78
 RoBytes3=252
 RoBytes4=96

    ASP.NET产生随机数的方法比较简单,方式和操作也很灵活。由于网络安全的因素,随机数越来越多的用在各类程序中,如登陆验证、注册验证等等。希望icech的这个学习笔记能给你一些帮助。

posted on 2008-07-24 12:21  ie421  阅读(339)  评论(0编辑  收藏  举报