网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C# > 正文
.net中产生随机数
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/14
下载{$ArticleTitle}原创论文样式
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>

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

是的,如你所见,产生了一样的两个随机数,无论重复多少次,都是一样的。原因在哪里呢?

不要以为使用系统时间作为随机种子就万无一失了——如果应用程序在一个较快的计算机上运行,则该计算机的系统时钟可能没有时间在此构造函数的调用之间进行更改,Random 的不同实例的种子值可能相同。这种情况下,我们就需要另外的算法来保证产生的数字的随机性。所以为了保证产生的随机数足够“随机”,我们不得不使用复杂一点的方法来获得随机种子。

在上面的这段程序中,我们首先使用系统时间作为随机种子,然后将上一次产生的随机数跟循环变量和一个与系统时间有关的整型参数相乘,以之作为随机种子,从而得到了每次都不同的随机种子,保证了产生足够“随机”的随机数。

得到整型的随机数组以后,我们将它变成字符串,然后使用System.Drawing中与GDI+相关的类生成一个图片并且在网页上显示出来。

生成图片的ASP.net页面全部代码如下:

<%@ Page Language="C#" Debug="true" Trace="false" TraceMode="SortByCategory"%><% @Import namespace="System.Drawing" %><% @Import namespace="System.Drawing.Imaging" %><% @Import namespace="System.Drawing.Text" %><% @Import namespace="System.IO" %><script language=C# runat=server>

public void Page_Load(object sender,EventArgs e){ string strNum=GetRandomString();

string strFontName;

int iFontSize;

int iWidth;

int iHeight;

strFontName="宋体";

iFontSize=12;

iWidth=10*strNum.Length;

iHeight=25;

Color bgColor=Color.Yellow;

Color foreColor=Color.Red;

Font foreFont=new Font(strFontName,iFontSize,FontStyle.Bold);

Bitmap Pic=new Bitmap(iWidth,iHeight,PixelFormat.Format32bppArgb);

Graphics g=Graphics.FromImage(Pic);

Rectangle r=new Rectangle(0,0,iWidth,iHeight);

g.FillRectangle(new SolidBrush(bgColor),r);

g.DrawString(strNum,foreFont,new SolidBrush(foreColor),2,2);

MemoryStream mStream=new MemoryStream();

Pic.Save(mStream,ImageFormat.Gif);

g.Dispose();

Pic.Dispose();

Response.ClearContent();

Response.ContentType="image/GIF";

Response.BinaryWrite(mStream.ToArray());

Response.End();

}

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<Length;i++)

{

Random ri=new Random(i*iFirst*unchecked((int)DateTime.Now.Ticks));

rtArray[i]=ri.Next(Up,Down);

iFirst=rtArray[i];

}

return rtArray;

}

其中生成图片的部分相对复杂,但由于不是本文的主题所在,所以本文不对之做详细说明,有兴趣的读者可以参考杜亮编写的《亲密接触ASP.net》一书中的相关内容。

最后我们可以编写一个普通的HTML页面来查看效果,只要把图片的src属性指向这个页面就行了(这里我们假设上面那个ASP.

  • 上一篇资讯: c#字符串及数组操作
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号