計算機不可能產生完全隨機的數字,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的這個學習筆記能給你一些幫助。