admin 管理员组文章数量: 1086019
2024年3月18日发(作者:数据库数据恢复是什么)
VB程序中使用Random类生成随机数方
法
课题项目:马鞍山市教育科学规划2021年课题项目《中职英语技能大赛智
能化测评模拟软件的设计和应用研究》(编号:MJG:21083)
摘要:VB中随机函数Random是随机产生一组无序数,但是随机函数随着VB
的升级而使得用法产生变化,本文作者通过设计《中职英语技能大赛模拟测评软
件》中随机函数的使用产生一些心得,分享给大家。
关键字:VB;Random;随机函数
在我们设计中职英语技能大赛智能化测评模拟软件的时候,我们需要使用VB
中随机函数生成随机数用于抽取题目组成试卷,但是我们发现VB6.0升级到
后,发现随机数函数也发生了变化,在中Random类是一种能够产
生满足某些随机性统计需求的数字序列的伪随机数生成器。下面我们就讲一讲常
见的随机函数基本功能和在本软件中的应用
一、Random类常用知识点:
1、构造函数:
(1)、Random()
使用与时间相关的默认种子值,初始化 Random 类的新实例。
(2)、Random(Int32)
使用指定的种子值初始化 Random 类的新实例。
参数为种子值,数据类型为Int32,用来计算伪随机数序列起始值的数字。
如果指定的是负数,则使用其绝对值。
2、方法:
(1)、Next:返回一个随机整数。
A、无参数:Next()——返回一个非负随机整数。
B、一个参数:Next(maxValue) ——返回一个小于所指定最大值的非负随机
整数。
参数(maxValue):类型为Int32,要生成的随机数的上限(随机数不能取
该上限值)。maxValue 必须大于或等于 0。
返回值:类型为Int32,大于或等于零且小于 maxValue 的 32 位有符号整
数,即:返回值的范围通常包括零但不包括 maxValue。 但是,如果 maxValue
等于 0,则返回 maxValue。
C、两个参数:Next(minValue,maxValue)——返回在指定范围内的任意整数。
参数(minValue):类型为Int32,返回的随机数的下界(随机数可取该下
界值)。
参数(maxValue):类型为Int32,返回的随机数的上界(随机数不能取该
上界值)。 maxValue 必须大于或等于 minValue。
返回值:类型为Int32,一个大于等于 minValue 且小于 maxValue 的 32
位带符号整数,即:返回的值范围包括 minValue 但不包括 maxValue。 如果
minValue 等于 maxValue,则返回 minValue。
(2)、NextBytes:用随机数填充指定字节数组的元素。
NextBytes(buffer)
参数(buffer):Byte[],包含随机数的字节数组。
说明:字节数组的每个元素设置为随机数字大于或等于 0,且小于或等于
MaxValue。
(3)、NextDouble:返回一个大于或等于 0.0 且小于 1.0 的随机双精度
型浮点数。
没有参数,返回值类型为Double。
3、使用方法:
要生成各种类型的随机数,必须先得到它的实例对象,然后再生成随机数。
注意只实例化一个对象,可以多次方法调用,生成的数字分布均匀,每个数字返
回的可能性均相等。
二、二、Random类生成随机数的弱点
Random类生成随机数是伪随机数,所以在Random的内部产生机制中还是有
一定规律的,并非是真正意义上的完全随机。 如果种子值相同则每次均产生相
同的随机数。如下面代码在构造函数中指定了种子值:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles
Dim rand As Random = New Random(66)
For i As Integer = 0 To 10
= &
() & e
Next
End Sub
三、
三、怎样才能每次运行程序时均生成不同的随机数?
其实很简单,就是每次运行程序时改变Random类的构造函数的种子值,可
以有以下做法:
第一种方式: 使用无参数的Random()构造函数;
默认种子值是使用作为种子值的,如果触发Random函
数间隔时间很短, 就有可能造成产生一样的随机数。
第二种方式: 使用RNGCryptoServiceProvider生成种子值;生成速度较慢。
第三种方式: 使用Guid生成种子值; 生成速度快。
测试代码如下:Public Class Form1
'''
''' 通过RNGCryptoServiceProvider获取种子值
'''
''' 通过Guid获取种子值
'''
'''
Private Shared Function GetRandomSeedbyGuid() As Integer
'Return New Guid().GetHashCode()
Return d().GetHashCode()
End Function
版权声明:本文标题:VB程序中使用Random类生成随机数方法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1710769968a572205.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论