伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。
伪随机数的选择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要。如果随机种子一样,那么同一个随机数发生器产生的随机数也会一样。一般地,我们使用同系统时间有关的参数作为随机种子,这也是 .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的这个学习笔记能给你一些帮助。