.NET中伪随机数的生成原理
2010-05-17 09:43
169 查看
ASP.NET中伪随机数生成机制
计算机不可能产生完全随机的数字。所谓的随机数发生器都是通过一定的算法对事先选定的随机种子做复杂的运算,用产生的结果来近似的模拟完全随机数,这种随机数被称作伪随机数。伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。
1、VB.NET内建函数KVM KVM切换器
ASP.NET程序可以采用多种编程语言,其默认的程序语言是VB.NET,虽然VB.NET和VB有些相似,但它们的应用环境不一样,编写代码的方法也有所不同。在VB.NET中,如果要使用数学函数,必须通过.NET Framework提供的Math类,它位于System命名空间下,用户可以在代码顶部添加Imports System. Math以便使用这些数学函数。
其中用于产生随机数的函数原型为:Rnd(x),该函数用以产生一个介于0~1之间的单精度随机数。x是产生随机数的种子。如果要从(min, max)这个范围内随机抽取一个数,此时需要用到公式:随机数 = (max - min) * Rnd(x) + min。
伪随机数的选择是从随机种子开始的,为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要。如果选择的随机种子一样则生成的随机序列也相同。一般地,使用同系统时间有关的参数作为随机种子,这也是.net Framework中的随机数发生器默认采用的方法。
2、随机数类System.Random
随机数类System.Random类提供以下方法用于产生各种满足不同要求的随机数,如表1所示:
表1 System.Random类提供的各种方法
编号
方法名称
功能描述
1
Next()
返回一个0~2147483647之间的整数
2
Next(i)
返回一个0~i之间的整数
3
Next(i,j)
返回一个i~j之间的整数
4KVM KVM切换器
Nextdouble()
返回一个0~1之间的随机小数
5
Nextdouble( byte())
用0~255之间的随机整数作为字节数组各元素的值。
使用随机数类System.Random必须先声明。如果要使用Nextbytes(byte())方法,在使用前也必须声明字节数组。
3、测试程序编写
在运行ASP.NET程序前必须建立其开发运行环境,包括配置Microsoft IIS和安装.NET Framework SDK以及机MSE编辑器。MSE编辑器是Microsoft Office的一个附加软件,作为ASP.NET的编辑工具非常方便。测试程序代码如下:
<script language="vb" runat="server">
sub page_load(send as object,e as eventargs)
dim r1 as random =new random()
response.write("The result of r1.next()is:"+r1.next().tostring())
response.write("Theresultofr1.next(100)is:" +r1.next(100).tostring())
response.write("The result of r1.next(100,150) is:"+r1.next(100,150).tostring())
response.write("The result of r1.nextdouble() is:"+r1.nextdouble().tostring())
r1.nextbytes(r) // dim r(300) as byte
response.write("the r(100) is:")
response.write(r(199))
end sub </script>
实例开发 KVM KVM切换器
应用程序需求分析:创建一个用于模拟掷骰子游戏的应用程序。此游戏中,游戏者将随机滚动一个骰子。每一个骰子有六个面,分别代表1,2,3,4,5,6这六个点。当骰子停下以后,观察骰子上表面的点数。如果掷得的点数为6,则提示赢的信息,否则将继续投掷。
计算机不可能产生完全随机的数字。所谓的随机数发生器都是通过一定的算法对事先选定的随机种子做复杂的运算,用产生的结果来近似的模拟完全随机数,这种随机数被称作伪随机数。伪随机数是以相同的概率从一组有限的数字中选取的。所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。
1、VB.NET内建函数KVM KVM切换器
ASP.NET程序可以采用多种编程语言,其默认的程序语言是VB.NET,虽然VB.NET和VB有些相似,但它们的应用环境不一样,编写代码的方法也有所不同。在VB.NET中,如果要使用数学函数,必须通过.NET Framework提供的Math类,它位于System命名空间下,用户可以在代码顶部添加Imports System. Math以便使用这些数学函数。
其中用于产生随机数的函数原型为:Rnd(x),该函数用以产生一个介于0~1之间的单精度随机数。x是产生随机数的种子。如果要从(min, max)这个范围内随机抽取一个数,此时需要用到公式:随机数 = (max - min) * Rnd(x) + min。
伪随机数的选择是从随机种子开始的,为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要。如果选择的随机种子一样则生成的随机序列也相同。一般地,使用同系统时间有关的参数作为随机种子,这也是.net Framework中的随机数发生器默认采用的方法。
2、随机数类System.Random
随机数类System.Random类提供以下方法用于产生各种满足不同要求的随机数,如表1所示:
表1 System.Random类提供的各种方法
编号
方法名称
功能描述
1
Next()
返回一个0~2147483647之间的整数
2
Next(i)
返回一个0~i之间的整数
3
Next(i,j)
返回一个i~j之间的整数
4KVM KVM切换器
Nextdouble()
返回一个0~1之间的随机小数
5
Nextdouble( byte())
用0~255之间的随机整数作为字节数组各元素的值。
使用随机数类System.Random必须先声明。如果要使用Nextbytes(byte())方法,在使用前也必须声明字节数组。
3、测试程序编写
在运行ASP.NET程序前必须建立其开发运行环境,包括配置Microsoft IIS和安装.NET Framework SDK以及机MSE编辑器。MSE编辑器是Microsoft Office的一个附加软件,作为ASP.NET的编辑工具非常方便。测试程序代码如下:
<script language="vb" runat="server">
sub page_load(send as object,e as eventargs)
dim r1 as random =new random()
response.write("The result of r1.next()is:"+r1.next().tostring())
response.write("Theresultofr1.next(100)is:" +r1.next(100).tostring())
response.write("The result of r1.next(100,150) is:"+r1.next(100,150).tostring())
response.write("The result of r1.nextdouble() is:"+r1.nextdouble().tostring())
r1.nextbytes(r) // dim r(300) as byte
response.write("the r(100) is:")
response.write(r(199))
end sub </script>
实例开发 KVM KVM切换器
应用程序需求分析:创建一个用于模拟掷骰子游戏的应用程序。此游戏中,游戏者将随机滚动一个骰子。每一个骰子有六个面,分别代表1,2,3,4,5,6这六个点。当骰子停下以后,观察骰子上表面的点数。如果掷得的点数为6,则提示赢的信息,否则将继续投掷。
相关文章推荐
- 随机数种子与伪随机数生成原理
- 使用Python模拟伪随机数生成原理
- 因为公司的产品用asp开发, 前一段时间用asp写了一个生成静态页面并分页的程序,但缘于对.net的热爱,写了这个.net下的生成静态页面并分页的程序。 主要的原理就是替换模板里的特殊字符。
- PHP、.NET生成HTML的技术原理分析
- URL短网址生成算法原理
- JSP生成静态页原理(转)
- 由浅至深,谈谈.NET混淆原理 (一)
- [.Net码农]分享非常漂亮的WPF界面框架源码及插件化实现原理
- 【小松教你手游开发】【面试必读(编程基础)】.NET垃圾回收:原理浅析
- php生成md5签名原理
- 二维码的生成细节和原理
- 前端引擎初步设计稿 -通过配置生成动态页面 ,LandaSugar平台 .NET-C#-MVC
- 编译原理(七)中间代码生成
- .NET生成静态页面并分页 (转)
- 生成静态页面 .net中 最简单的3种方法(转自心情日辑的博客)
- .net网站发布只生成一个dll的方法
- 二维码的生成细节和原理[膜拜]
- .net 类库生成chm说明文档