这个例子中,我们使用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 >
下面是笔者机器上产生的结果的截图:
是的,如你所见,产生了一样的两个随机数,无论重复多少次,都是一样的。原因在哪里呢?