关键词不能为空

当前您在: 主页 > 英语 >

随机数生成算法的研究

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 08:13
tags:

-

2021年2月28日发(作者:词典在线翻译)


随机数生成算法的研究



[


日期:


2006-05-23]


来源:



作者:



[


字体:







]


张敬新







要:


本文 通过流程图和实际例程,


较详细地阐述了随机数生成的算法和具体的程序设计,


分析了其符合算法特征的特性。



关键词:


随机数;算法;算法特征;程序设计



1



引言


< p>
在数据结构、


算法分析与设计、


科学模拟等方面都 需要用到随机数。


由于在数学上,


整数是


离散型的,


实数是连续型的,


而在某一具体的工程技术应用中 ,


可能还有数据值的范围性和


是否可重复性的要求。

< p>
因此,


我们就整数随机数和实数随机数,


以及它们 的数据值的范围性


和是否可重复性,分别对其算法加以分析和设计。以下以


Visual


Basic


语言为工具,对整


数随机数生成问题加以阐述,


而对于实数随机数生成问题,


只要稍加修改就可转化为整数随


机数生成问题。



根据整数随机数范围性和是否可重复性,可分为:



(1)


某范围内可重复。



(2)


某范围内不可重复。



(3)


枚举可重复。



(4)


枚举不可重复。



所谓范围,是指在两个数


n1


n2


之间。例如,在


100



200


之间这个范围,那么,只要


产生的整 数随机数


n


满足


100≤n≤200< /p>


,都符合要求。所谓枚举,是指有限的、已知的、若


干个不连续的 整数。例如,


34



20



123



5



800



5


个整数就是一种枚举数,也就是单


独可以一个个确定下来。

< br>



2



某范围内可重复




Visual


Basic


语言中,有一个随机数函数


Rnd




语法:


Rnd[(number)]




参数


number


可选,


number


的值决定了



Rnd


生成随机数的方式。


Rnd


函数返回小于



1


但大于或等于



0


的值。



如果


number




小于零



Rnd


生成



每次都相同的数字,并将


number


用作种子。



大于零



等于零



未提供



序列中的下一个随机数。



最近生成的数字。



序列中的下一个随机数。




在调用



Rnd


之前,


先使用无参数的



Randomize


语句初始化随机数生成器,


该生成器具有


一个基于系统计时器的种子。



若要生成某给定范围内的随机整数,可使用以下公式:



Int((upperbound


-


lowerbound


+


1)


*


Rnd


+


lowerbound)


这里,


upperbound


是此范围的上限,而



lowerbound


是范围的下限。



程序流程图:



程序例程:下面是一个生成


10



10~20


之间随机数的例子。



Private Sub Command1_Click()


lowerbound = 10


upperbound = 20


Randomize


For i = 1 To 10


random = Int((upperbound - lowerbound + 1) * Rnd +


lowerbound)


random;


Next



End Sub



运行结果:


12


10


20


20


17


17


18


14


12


20


3



某范围内不可重复



要产生一定范围内 不可重复的随机数,


按通常的设计是把曾经生成的随机数保存起来作为历


史数据。


产生一个新的随机数后在历史数据搜索,


若找 到就重新产生一个新的再重复数据搜


索;否则就认为已经找到了一个新的不同随机数。< /p>



例如,要由计算机随机产生


10



101



200< /p>


之间互不相同的数。



程序流程图:



程序:




Private Sub Command2_Click()


Dim random(10) As Integer


lowerbound = 101


upperbound = 200



Randomize


For i = 1 To 10


Do


r = Int((upperbound - lowerbound + 1) * Rnd + lowerbound)


yes = 0


For j = 1 To i - 1


If r = random(j) Then yes = 1: Exit For


Next


Loop While yes = 1


random(i) = r


r;


Next



End Sub



运行结果:


199


174


147


126


120


190


192


146


122


111


粗看起来,


上面的程序似乎没有什么问题,


在 执行过程中程序也能够通过。


但,


仔细分析我

< br>们就会发现问题出在一个新产生的随机数是否已经存在的判定上。


既然是随机数,


那么从数


学的角度来说在概率上,每次产生的随机数

< p>


r


就有可能相同,尽管这种可能性很小,但确< /p>


是一个逻辑性与正确性的问题。因此,每次产生的新的随机数


r< /p>


都有可能是数组


random




i-1


个数中的某一个,也就是说程序在运行 过程中由此可能会导致死循环,那么,能否找


到一个不在数组


r andom


中的随机数


r


的工作就变得 不确定了。从算法的角度来讲,在理论


上,程序失去了有穷性、有效性和确定性。



什么是算法?通常人们将算法定义为一个有穷的指令集,

< p>
这些指令为解决某一特定任务规定


了一个运算序列。一个算法应当具有以下 特征:


-


-


-


-


-


-


-


-



本文更新与2021-02-28 08:13,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/679798.html

随机数生成算法的研究的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文